精华内容
下载资源
问答
  • Java的8个Java日志工具

    千次阅读 2018-06-28 23:49:47
    摘要 : 本文要来分享一些Java程序员最常用的Java日志框架组件。 日志工具 log4j – 最受欢迎的Java日志组件 Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台、文件、用户...

    摘要 : 本文要来分享一些Java程序员最常用的Java日志框架组件。

    日志工具

    log4j – 最受欢迎的Java日志组件

    Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台、文件、用户界面,也可以输出到操作系统的事件记录器和一些系统常驻进程。更值得一提的是,Log4j可以允许你非常便捷地自定义日志格式和日志等级,可以帮助开发人员全方位地掌控日志信息。官方网站:https://logging.apache.org/log4j/2.x/

    gclogviewer – Java日志查看工具

    gclogviewer是一个支持jdk 6的gc log可视化工具,和gcviewer相比,gclogviewer支持根据gc log生成GC的趋势图,也支持生成调优建议所需的数据趋势图。 官方网站:http://code.google.com/p/gclogviewer/

    LF4J – 基于API的Java日志框架

    SLF4J提供了一个简单统一的日志记录接口,开发者在配置和部署时只需要实现这个接口即可实现日志功能。 Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。 官方网站:http://www.slf4j.org/

    Flume – Apache日志服务器

    Flume是一个日志分析系统,Flume是分布式的,它有一个非常灵活的架构,用来收集、聚合以及移动大量日志数据,并且提供可靠、容错的系统架构。 官方网站:http://flume.apache.org/

    zLogFabric – 日志存储系统

    zLogFabric 是一个集成的跨平台日志解决方案,通过消息系统收集各个应用的日志信息存储到一个集中式的系统中。模块化的设计使得服务器可对日志进行存储、转发、警报以及生成日志统计信息。 zLogFabric 可收集来自文件、syslog、log4j、log4net 以及 Windows 事件的数据。 官方网站:http://www.zlogfabric.com/

    展开全文
  • Java Log Viewer日志查看

    万次阅读 2014-08-15 17:50:29
    工欲善其事必先利其器在投奔怒海——一个Domino老程序员眼里的Java开发我提到目前所做的Java开发中遇到的大量日志之问题。服务器控制台刷屏似地滚动,日志文件飞快地增长,debug的时候相关信息常常被例常日志淹没,...

    工欲善其事必先利其器

    投奔怒海——一个Domino老程序员眼里的Java开发我提到目前所做的Java开发中遇到的大量日志之问题。服务器控制台刷屏似地滚动,日志文件飞快地增长,debug的时候相关信息常常被例常日志淹没,在众多Logger滔滔不绝的输出下,要找出错误所在有时都挺费眼。日志的作用无可置疑,大型项目中日志海量产生也不少见。在以前的Domino开发中,Domino服务器在产生日志方面相当节制,程序员对日志的依赖程度也不高。转换到Java开发,我用一直最喜爱的文本编辑器EditPlus肉搏了一段时间(如果用Windows自带的记事本,打开动辄十几甚至几十兆的日志都有些困难),越来越迫切感觉到需要更专业的武器。Java Log Viewer(日志查看器)是我想像中的这款工具的名称,具备的功能包括:

    1.       可以手动重载日志。这样既可以防止自动跟踪日志影响当前关注的内容,又可以在需要时方便地载入最新的日志。

    2.       对不同级别的日志项着色标注。

    3.       可依据级别过滤日志。

    4.       方便搜索。

    上网一搜索便发现这是很多人想要的,并且与很多工具一样,问题已经不是缺乏,而是在众多候选者里选择。

    OtrosLogViewer

    根据Java Log Viewer这三个关键词的搜索结果和StackOverflow上的对应问题讨论,经过一番试用和比较【注1】,我确定OtrosLogViewer(http://code.google.com/p/otroslogviewer/)就是我所要的。

    除了我原先设想的功能,OtrosLogViewer还提供了以下便利:

    5.       以列表的形式分栏显示日志项,底部显示当前选中行的详细内容,并且表格的列可裁剪。

    6.       可以依据时间、级别、Logger名称、线程等条件过滤日志。

    7.       可迅速定位到上一条或下一条某个级别的日志。

    8.       可标记日志,还能根据许多实用的条件自动标记。

    9.       预设对多种格式日志的支持,并且有一个编辑器方便自定义需解析的Log4j日志模式(pattern)。

    不仅如此,软件的界面美观,操作友好。

    演示

    下面就以我所打交道的JBoss AS 7.1产生的日志来例示OtrosLogViewer的用法。


    启动后界面

    除了菜单栏的基本命令,OtrosLogViewer的功能都由按钮或快捷菜单提供,操作上符合直觉,用户需要的功能都以便捷的方式出现在合适的地方。它没有一般软件的设置界面,各种设置都结合在操作的视图里。

    OtrosLogViewer有两组基本功能,Open XXX Log和Tail XXX Log,前者是用于打开一个静止的日志文件,后者则可自动刷新(即tail跟踪的含义)一个live的日志文件。软件支持包括Log4j普通文本和XML等多种格式的解析,并且有相应的菜单命令。如果不确定日志采用的格式,OtrosLogViewer也能在打开日志时自动检测。预设的Log4j日志模式为

    %d{yyyy-MM-ddHH:mm:ss,SSS} %-5p [%t] %m%n

    我所用的JBoss AS 7.1(从JBoss配置文件standalone.xml或者Web管理界面均可看到默认的日志处理器的模式为

    %d{HH:mm:ss,SSS}%-5p [%c] (%t) %s%E%n

    为了解析这样的日志,可以调用菜单里的Tools -> Show Log4j pattern parser editor。


    将其中的相关初始配置改为

    pattern=TIMESTAMP LEVEL [CLASS] (THREAD)  MESSAGE

    dateFormat=HH:mm:ss,SSS

    在同一个界面里可以看到载入的日志文件,修改模式后可以随时测试解析结果。成功后将模式保存为新的pattern文件。软件的两组Open和Tail菜单里都会自动添加采用这个新模式的命令。

    打开一个日志文件,所有的日志条目已经列表显示,时间列自动只显示日期的时间部分。不同级别的日志很醒目地用不同颜色的图标区分。选中行日志的详细信息在下面的视图显示,包括错误堆栈和SOAP Message都有格式化和着色显示。用上十分钟,你就会发现仅仅这些阅读日志的效率大大提高。工具栏左边有搜索框,右边有按钮可以定位到上一条或下一条各种级别的日志。每一条日志都可以做标记(Mark)或者加注释(Note),主视图左边的工具视图可以设置和显示过滤和常用的自动标记功能。特别要说明的是列表视图上方的两个图标,第一个可切换是否自动读取新日志,第二个图标则控制在自动刷新的状态下列表中的当前行是否跟随读取的最新行。这两项功能结合起来,在读取live日志时十分方便。


    最后再展示一下选中日志后快捷菜单里的丰富选项,过滤和删除都很实用,能够快速排除无关的日志。

     

    注1:Apache的Chainsaw已经多年未更新,bug不少,性能不佳。

    一个直接以Java Log Viewer命名的项目过于简单,且只适用于java.util.logging生成的日志。

    StackOverflow一个被人推荐的LogExpert在目前的1.5版本上有一个明显且重大的bug,无论是否设置跟踪,软件都会自动跳到最新的日志行。

    展开全文
  • java查询实时日志

    千次阅读 2018-03-09 15:14:08
    java查询日志 查询到相关的目录,然后输入: tail -f catalina.out 本项目所用

    java查询日志

    查询到相关的目录,然后输入:
    tail -f catalina.out

    本项目所用

    展开全文
  • Java面试Offer直通车

    万人学习 2019-12-18 15:19:52
    Java面试宝典】 1、68讲视频课,500道大厂Java常见面试题+100个Java面试技巧与答题公式+10万字核心知识解析+授课老师1对1面试指导+无限次回放 2、这门课程基于胡书敏老师8年Java面试经验,调研近百家互联网公司及...
  • Java常用日志框架介绍

    千次阅读 2017-12-29 23:19:15
    java日志概述 对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf...

    转载自 Java常用日志框架介绍


    java日志概述

    对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul。

    java常用日志框架类别介绍

    • Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。

    • Log4j 2 Apache Log4j 2是apache开发的一款Log4j的升级产品。

    • Commons Logging Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging。

    • Slf4j 类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j)。

    • Logback 一套日志组件的实现(slf4j阵营)。

    • Jul (Java Util Logging),自Java1.4以来的官方日志实现。

    看了上面的介绍是否会觉得比较混乱,这些日志框架之间有什么异同,都是由谁在维护? 下文会逐一介绍。

    Java常用日志框架历史

    • 1996年早期,欧洲安全电子市场项目组决定编写它自己的程序跟踪API(Tracing API)。经过不断的完善,这个API终于成为一个十分受欢迎的Java日志软件包,即Log4j。后来Log4j成为Apache基金会项目中的一员。

    • 期间Log4j近乎成了Java社区的日志标准。据说Apache基金会还曾经建议sun引入Log4j到java的标准库中,但Sun拒绝了。

    • 2002年Java1.4发布,Sun推出了自己的日志库JUL(Java Util Logging),其实现基本模仿了Log4j的实现。在JUL出来以前,log4j就已经成为一项成熟的技术,使得log4j在选择上占据了一定的优势。

    • 接着,Apache推出了Jakarta Commons Logging,JCL只是定义了一套日志接口(其内部也提供一个Simple Log的简单实现),支持运行时动态加载日志组件的实现,也就是说,在你应用代码里,只需调用Commons Logging的接口,底层实现可以是log4j,也可以是Java Util Logging。

    • 后来(2006年),Ceki Gülcü不适应Apache的工作方式,离开了Apache。然后先后创建了slf4j(日志门面接口,类似于Commons Logging)和Logback(Slf4j的实现)两个项目,并回瑞典创建了QOS公司,QOS官网上是这样描述Logback的:The Generic,Reliable Fast&Flexible Logging Framework(一个通用,可靠,快速且灵活的日志框架)。

    • 现今,Java日志领域被划分为两大阵营:Commons Logging阵营和SLF4J阵营。
      Commons Logging在Apache大树的笼罩下,有很大的用户基数。但有证据表明,形式正在发生变化。2013年底有人分析了GitHub上30000个项目,统计出了最流行的100个Libraries,可以看出slf4j的发展趋势更好:

    pic1

    • Apache眼看有被Logback反超的势头,于2012-07重写了log4j 1.x,成立了新的项目Log4j 2。Log4j 2具有logback的所有特性。

    java常用日志框架之间的关系

    • Log4j2与Log4j1发生了很大的变化,log4j2不兼容log4j1。

    • Commons Logging和Slf4j是日志门面(门面模式是软件工程中常用的一种软件设计模式,也被称为正面模式、外观模式。它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用)。log4j和Logback则是具体的日志实现方案。可以简单的理解为接口与接口的实现,调用这只需要关注接口而无需关注具体的实现,做到解耦。

    • 比较常用的组合使用方式是Slf4j与Logback组合使用,Commons Logging与Log4j组合使用。

    • Logback必须配合Slf4j使用。由于Logback和Slf4j是同一个作者,其兼容性不言而喻。

    Commons Logging与Slf4j实现机制对比

    Commons logging实现机制

    Commons logging是通过动态查找机制,在程序运行时,使用自己的ClassLoader寻找和载入本地具体的实现。详细策略可以查看commons-logging-*.jar包中的org.apache.commons.logging.impl.LogFactoryImpl.java文件。由于OSGi不同的插件使用独立的ClassLoader,OSGI的这种机制保证了插件互相独立, 其机制限制了commons logging在OSGi中的正常使用。

    Slf4j实现机制

    Slf4j在编译期间,静态绑定本地的LOG库,因此可以在OSGi中正常使用。它是通过查找类路径下org.slf4j.impl.StaticLoggerBinder,然后绑定工作都在这类里面进。

    如果在项目中如果选择日志框架

    如果是在一个新的项目中建议使用Slf4j与Logback组合,这样有如下的几个优点。

    1. Slf4j实现机制决定Slf4j限制较少,使用范围更广。由于Slf4j在编译期间,静态绑定本地的LOG库使得通用性要比Commons logging要好。

    2. Logback拥有更好的性能。Logback声称:某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在Logback中需要3纳秒,而在Log4J中则需要30纳秒。LogBack创建记录器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它获取已存在的记录器只需94纳秒,而Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的。

    3. Commons Logging开销更高 在使Commons Logging时为了减少构建日志信息的开销,通常的做法是:
      if(log.isDebugEnabled()){
      log.debug("User name: " +
      user.getName() + " buy goods id :" + good.getId());
      }
      在Slf4j阵营,你只需这么做:
      log.debug("User name:{} ,buy goods id :{}", user.getName(),good.getId());
      也就是说,slf4j把构建日志的开销放在了它确认需要显示这条日志之后,减少内存和cup的开销,使用占位符号,代码也更为简洁

    4. Logback文档免费。Logback的所有文档是全面免费提供的,不象Log4J那样只提供部分免费文档而需要用户去购买付费文档。

    如何在项目中使用Slf4j

    Slf4j与其他各种日志组件的桥接

    jar包名 说明
    slf4j-log4j12-1.7.13.jar log4j1.2版本的桥接器,你需要将log4j.jar加入classpath。
    slf4j-jdk14-1.7.13.jar java.util.logging的桥接器,JDK原生日志框架。
    slf4j-nop-1.7.13.jar NOP桥接器,默默丢弃一切日志。
    slf4j-simple-1.7.13.jar 一个简单实现的桥接器,该实现输出所有事件到System.err. 只有INFO以及高于该级别的消息被打印,在小型应用中它也许是有用的。
    slf4j-jcl-1.7.13.jar Jakarta Commons Logging 的桥接器. 这个桥接器将SLF4j所有日志委派给JCL。
    logback-classic-1.0.13.jar(requires logback-core-1.0.13.jar) slf4j的原生实现,logback直接实现了slf4j的接口,因此使用slf4j与 logback的结合使用也意味更小的内存与计算开销

    具体的接入方式参见下图
    pic2

    如何桥接遗留的api

    在实际环境中我们经常会遇到不同的组件使用的日志框架不同的情况,例如Spring Framework使用的是日志组件是Commons logging,XSocket依赖的则是Java Util Logging。当我们在同一项目中使用不同的组件时应该如果解决不同组件依赖的日志组件不一致的情况呢?现在我们需要统一日志方案,统一使用SLF4J,把他们的日志输出重定向到SLF4J,然后 SLF4J 又会根据绑定器把日志交给具体的日志实现工具。Slf4j带有几个桥接模块,可以重定向log4j,JCL和java.util.logging中的API到Slf4j。

    遗留的api桥接方案

    jar包名 作用
    log4j-over-slf4j-version.jar 将log4j重定向到slf4j
    jcl-over-slf4j-version.jar 将commos logging里的Simple Logger重定向到slf4j
    jul-to-slf4j-version.jar 将Java Util Logging重定向到slf4j

    桥接方式参见下图
    pic3

    使用slf4j桥接要注意事项

    在使用slf4j桥接时要注意避免形成死循环,在项目依赖的jar包中不要存在以下情况。

    多个日志jar包形成死循环的条件 产生原因
    log4j-over-slf4j.jar和slf4j-log4j12.jar同时存在 由于slf4j-log4j12.jar的存在会将所有日志调用委托给log4j。但由于同时由于log4j-over-slf4j.jar的存在,会将所有对log4j api的调用委托给相应等值的slf4j,所以log4j-over-slf4j.jar和slf4j-log4j12.jar同时存在会形成死循环
    jul-to-slf4j.jar和slf4j-jdk14.jar同时存在 由于slf4j-jdk14.jar的存在会将所有日志调用委托给jdk的log。但由于同时jul-to-slf4j.jar的存在,会将所有对jul api的调用委托给相应等值的slf4j,所以jul-to-slf4j.jar和slf4j-jdk14.jar同时存在会形成死循环

    参考链接

    slf4j官网

    slf4j使用手册1

    slf4j使用手册2

    logback官网

    commons logging官网


    展开全文
  • Java GC日志查看,GC日志时间分析

    万次阅读 2019-03-09 17:00:49
    Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集。 ...
  • java日志使用

    万次阅读 多人点赞 2019-06-08 09:56:58
    java日志:日志就是记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。 常用的日志框架:Log4j、Slf4j 、Logback 。 在JDK 1.3及以前,Java打日志依赖System.out.println(), System.err.println()...
  • Java自定义日志模块实现

    热门讨论 2013-06-18 22:59:39
    自定义日志模块(接口及代理实现),而不直接使用第三方日志框架接口,避免在日志框架升级或者切换时,代码过多耦合。 这个举例说明一下: 比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j...
  • linux根据查看java进程日志的方法

    千次阅读 2020-03-03 23:55:08
    1)先用jps查看进程pid,该进程pid为7233 2)cd /proc/7233/fd,然后用ll查看目录下文件
  • java日志级别

    千次阅读 2018-12-10 11:09:35
    https://www.cnblogs.com/lingduqianli/p/7589173.html
  • 查看日志的方式有很多,这里记录几个常用的tail和less命令。 一、首先进入测试服务器。 打开终端。 ssh root@xxxxxxxxx 运行上一步之后输入密码,我们可以通过 ssh-copy-id root@xxxx命令来记住密码,以后登录就不...
  • Java程序员最常用的8个Java日志框架

    千次阅读 2016-12-26 16:52:48
    来源...然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug;在运行维护阶段,日志系统又可以帮我们记录大部分的异常信息,从而帮助我们更好
  • Java程序日志打印规范

    千次阅读 2020-05-02 11:17:04
    日志技术框架一览 JUL:JDK中的日志记录工具,也常称为JDKLog、jdk-logging。 LOG4J1:一个具体的日志实现框架。 LOG4J2:一个具体的日志实现框架,是LOG4J1的下一个版本。 LOGBACK:一个具体的日志实现框架...
  • ELK收集java日志

    千次阅读 2020-07-01 10:59:36
    由于elasticsearch本身产生的日志就是java日志,所以我们可以通过ELK平台直接收集elasticsearch日志 1.修改filebeat配置文件 [root@db01 ~]# vim /etc/filebeat/filebeat.yml filebeat.inputs: - type: log enabled...
  • Java 日志相关的面试

    千次阅读 2018-06-25 15:28:07
    近期整理的关于日志的面试题,对于初级者来说,很少会涉及...1. 常用的日志框架 Java Logging API(Oracle)—— Java默认的日志框架 Log4j(Apache)——开源日志框架 Logback(Logback Project)——开源项目,...
  • 本文总结了查看日志的几个linux命令,cat、tac、head、tail、more、less,其中less真的很适合日常开发日志查看,非常推荐less。 参看与感谢 《鸟哥的linux私房菜》 Linux 命令大全 |菜鸟教程 个人公众号 如果你是个...
  • java日志输出级别问题请教

    千次阅读 2018-11-14 17:37:01
    =INFO级别的日志信息,如何设置可以显示>=DEBUG的日志信息呢?求教? 一、log4j.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration ...
  • java 日志处理

    千次阅读 2018-08-13 21:00:00
    java日志组件介绍 common-logging(同时也称JCL)   common-logging是 apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过...
  • Java后台日志实时显示

    千次阅读 2019-04-22 13:48:59
    本文仅是一个简单的案例,web端实时显示Java后台日志。需要频繁请求后台以获取日志,并不是长连接。 可以前端传每次想要展示的行数和从第几个字节开始(假设日志文件总共123456字节,但是只想从334字节开始展示) ...
  • java日志管理

    万次阅读 2016-10-08 10:20:44
    我们在日常开发中主要使用的java日志框架组件是:log4j、SLF4J、Commons Logging 日志级别一般分为7个打印级别(不同的日志框架组件可能打印的日志级别区别不大): OFF-关闭所有日志; FATAL-记录严重的错误,并且...
  • java日志级别动态调整

    千次阅读 2018-03-10 12:13:25
    java日志级别动态调整 近期在web项目维护过程中,发现一个令人脑袋大的事,线上的项目出了bug,必须日志开启debug才能看到错误。总不能没事重启一下吧?em……,老大听了想打人。后来查了下,其实可以通过动态的...
  • 如何查看服务器日志

    2013-08-27 17:32:10
    查看linux系统下面的服务器日志
  • java日志框架详解总结(含配置)

    千次阅读 2018-05-25 10:17:41
    该篇是集合了百度众多的日志框架详解,java日志框架分析的总结篇。 具体网址: https://blog.csdn.net/foreverling/article/details/51385128 https://blog.csdn.net/chszs/article/details/8653460 ...
  • java 日志打印规范

    千次阅读 2019-08-16 11:43:00
    日志要求: 重要日志一定要打印到日志文件 日志文件应该每天滚动一次...日志文件要可以方便使用grep语句查看 日志文件归档:需要告知运维归档 日志预警,通过ES实现 对于无法预知的异常,一定要打印堆栈:LOGGER.er...
  • Java系统日志管理

    万次阅读 2018-07-06 15:24:06
    在一个系统中日志管理是一个很重要的部分,因为当系统发布到线网后出了问题只能看系统日志了,这个时候系统日志起到了一个错误排查功能,同时也可以通过系统日志统计用户吞吐量等等,总之系统日志是系统管理一个重点...
  • JAVA记录操作日志步骤

    万次阅读 多人点赞 2019-08-06 14:01:55
    系统日志不论是在日常的管理还是维护中都会起到很大的作用,但是在日志的记录中通常会存在很多的问题 日志记录的不规范性 日志记录的重复性 日志记录的难分类 目前日志主要记录的有三方面 请求的入参,出参 关于...
  • Java实现日志脱敏处理

    千次阅读 热门讨论 2019-01-24 19:30:36
    Java 实现日志脱敏处理 题记 在日常工作中,日志处理是我们每一个程序员必备的素质,但是在有些场景下客户信息敏感,需要进行某些字段,或者某部分字段的脱敏处理。接到需求我们开始操刀! 需求分析 处理字段的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 791,720
精华内容 316,688
关键字:

java日志查看

java 订阅