`
61234865
  • 浏览: 11643 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Log4J备忘录

    博客分类:
  • java
阅读更多

构成

记录器(Loggers):用来记录日志,相当于日志记录对象,这个在配置文件中可能配置多个,用来对不同的目录进行分别记录

根记录器:

log4j.rootLogger = [ level ] , appenderName, appenderName, … 

在早期的Log4j版本中,org.apache.Category实现了记录器的功能,为了提高向后兼容 性,Logger扩展了Category,因此rootCategory和rootLogger是可以互换的,但最后Category将从类库中删除,因 此请使用Logger类。 level级别: 分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别:ERROR、WARN、INFO、DEBUG:

 

自定义记录器:

这个东西一般在一个较大的项目中会存在多个,以目录为区分.语法为:

log4j.logger.loggerName = [ level ] , appenderName, appenderName, … 

  例如:

log4j.logger.com.projectx.conf=info,stdout,logfile
log4j.logger.com.projectx.platform=info,stdout,logfile
log4j.logger.com.projectx.modules=warn,stdout,logfile
log4j.loggerojectx.collie=debug,stdout,logfile
log4j.logger.com.projectx.mq=debug,stdout,logfile
log4j.logger.com.projectx.jmx=warn,stdout,logfile

 

输出源(Appenders):这个用来存放日志信息,可以是控制台,也可以是文件,有如下几种:

 

org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
org.apache.log4j.SocketAppender (Socket)
org.apache.log4j.NtEventLogAppender    (NT的Event Log)
org.apache.log4j.JMSAppender   (电子邮件)

  输出源可以进行参数配置:(具体需要哪些参数可以参见源代码)

log4j.appender.appenderName = fully.qualified.name.of.appender.classs
log4j.appender.appenderName.option1 = value1 
… 
log4j.appender.appenderName.option = valueN 

 

布局(Layouts):用来定义输入日志格式,有以下几种:

 

org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息

  PatternLayout

这个比较长特殊,各种参数定义如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

  配置文件详解

//根记录器

log4j.rootCategory=debug  //全局记录器,注:这里没要配置输入源,因为下面每一个记录器都配置了输出源,记录器与记录器之间是继承关系,子类会覆盖掉父类的输出源(如果子类指定了,父类就没办法统一控制了),但输出的level级别是可以统一控制的,子类的级别如果高于父类则用子类,否则使用父类级别,例如:root级别为info,则子类为debug的时候日志也只输出info级别的,但子类如果是warn级别,则info不输出

//输出源1:控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender //输出到控制台
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout //自定义布局
log4j.appender.stdout.layout.ConversionPattern=[%d]-%p-[%F:%L]-->>%m%n
//输出源2:日志文件
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=../logs/log4j.out //这里使用相对路径,便于不同平台部署
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d]-%p-[%F:%L]-->>%m%n

//自定义记录器:
log4j.logger.com.projectx.conf=info,stdout,logfile //这里都指定了输出源,如果不指定,则走root配置,如果root也没指定的话,这个我也不知道,没实验过,猜想应该没有日志输出吧
log4j.logger.com.projectx.platform=info,stdout,logfile
log4j.logger.com.projectx.modules=warn,stdout,logfile
log4j.logger.com.projectx.collie=debug,stdout,logfile
log4j.logger.com.projectx.mq=debug,stdout,logfile
log4j.logger.com.projectx.jmx=warn,stdout,logfile

//自定义框架记录器
log4j.logger.org.hibernate=warn,stdout
log4j.logger.org.directwebremoting=warn,stdout
log4j.logger.org.springframework=WARN,stdout
log4j.logger.uk.ltd.getahead.dwr=WARN,stdout
log4j.logger.net.sf.ehcache=WARN,stdout
log4j.logger.org.apache.commons=WARN,stdout
log4j.logger.org.apache.struts=WARN,stdout
log4j.logger.com.opensymphony.xwork2=WARN,stdout
log4j.logger.org.apache.struts2=WARN,stdout
log4j.logger.org.acegisecurity=WARN,stdout
log4j.logger.freemarker=WARN,stdout
log4j.logger.org.apache.activemq=WARN,stdout
log4j.logger.org.quartz=WARN,stdout
 

代码中使用

代码中使用很简单,如下:

private static Logger log = Logger.getLogger ( XXXXXXXXX.class )
log.info("");
log.debug("");
 

总结

总的来说,log4j大体上就包含这么多东西。这里我只是做个总结来给自己备忘,一般项目开发过程中尽量不要使用system.out.priintln(),因为这种打印出来的日志不可控。一直都不能静下心来好好学点东西,现在总算是学了这么一点点小东西。整个log4j配置起来不复杂,但它这种实现思想很值得借鉴

分享到:
评论

相关推荐

    log4j的使用备忘.doc

    《log4j的使用备忘》 在Java开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序运行过程中的信息、警告和错误,以便于调试和性能优化。Log4j是Apache组织提供的一款强大且灵活的日志记录工具,它允许...

    常用MATLAB函数备忘录.pdf

    MATLAB 函数备忘录 MATLAB 是一种高级编程语言和环境,广泛应用于科学计算、数据分析、算法开发、数据可视化等领域。以下是 MATLAB 中常用的函数备忘录,涵盖了数学函数、三角函数、向量函数、永久常数、绘图函数等...

    常用MATLAB函数备忘录.docx

    MATLAB函数备忘录 MATLAB是一种高性能的技术计算语言,它提供了大量的数学函数和工具来帮助用户进行科学计算和数据分析。下面是MATLAB中的一些常用函数备忘录: 一、基本数学函数 * abs(x):纯量的绝对值或向量的...

    常用MATLAB函数备忘录-19页文档资料.pdf

    MATLAB 函数备忘录 本文档对 MATLAB 中常用的函数进行了总结,包括数学函数、 troisgonal 函数、向量函数、永久常数、绘图函数和特殊变量等。下面是详细的知识点总结: 一、数学函数 * abs(x):纯量的绝对值或...

    常用MATLAB函数备忘录-19页文档资料.docx

    "MATLAB函数备忘录" MATLAB 是一款功能强大且广泛应用于科学计算和工程领域的软件。它提供了大量内置函数,帮助用户快速实现数学计算和数据分析。本文档总结了 MATLAB 中一些常用的函数和常数,涵盖数学函数、三角...

    project-ref-memo:项目参考备忘录

    备忘录可能推荐使用Log4j、SLF4J或Logback,并提供配置和使用日志的最佳实践。 9. **Spring框架**:作为Java最流行的框架之一,Spring提供了依赖注入、AOP、数据库操作等功能。备忘录可能涵盖如何初始化Spring Boot...

    mybaties log plugin

    4. 在项目的pom.xml或build.gradle中配置MyBatis的日志实现,如Log4j或SLF4J,并设置合适的日志级别(如DEBUG)以显示SQL信息。 5. 调试或运行应用,控制台将展示SQL输出。 对于提供的`intellij-mybaitslog-master`...

    pensive:私人个人备忘录和日记服务

    8. **日志记录**:为了方便故障排查和性能监控,应用可能会使用Log4j或其他日志框架记录运行时信息。 9. **单元测试与集成测试**:JUnit和Mockito等工具可以帮助开发者编写和运行测试,确保代码的质量和稳定性。 ...

    精选_基于Jsp和MySQL实现的个人记事备忘系统_源码打包

    【标题】"精选_基于Jsp和MySQL实现的个人记事备忘系统_源码打包"揭示了这个项目的核心——一个使用JSP(JavaServer Pages)技术和MySQL数据库构建的个人记事本或备忘录应用。这样的系统允许用户在线创建、编辑、存储...

    个人生活助手——java

    11. **错误处理与日志记录**:为了调试和监控系统,开发者会使用异常处理机制和日志记录库如Log4j或Logback,以捕获和记录程序运行过程中的问题。 12. **前端技术**:虽然主要讨论的是后端Java,但前端界面可能使用...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    备忘录模式 观察者模式 状态模式 策略模式 模板方法模式 访问者模式 设计案例 UML 架构 系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 协议设计...

    设计模式代码实现+源码设计模式分析

    又如,Apache的Log4j日志系统采用了观察者模式,使得日志记录者和日志处理器之间保持松散耦合。 通过源码分析,我们可以看到设计模式如何与其他软件工程原则(如 SOLID 原则)结合,如何促进代码的复用,如何优化...

    SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)

    9. **日志**:`log4j-1.2.14.jar`是广泛使用的日志记录框架。 10. **其他辅助库**:`antlr-2.7.6.jar`、`commons-beanutils.jar`、`commons-collections-3.2.jar`、`commons-dbcp-1.2.2.jar`、`commons-logging-1.1...

    Java项目开发平台开发规范方案.docx

    - 日志类:如Log4j或java.util.logging,用于记录程序运行状态和错误信息。 - 资源注册:注册和管理应用中的各种资源,如数据库连接池、配置文件等。 - 登陆权限验证:确保只有授权用户可以访问特定功能或数据。 ...

    大学文献检索资料 DOC

    4.通过科技文献检索可避免科研重复,加快科研工作的进程. 5.通过科技文献检索能加强科技交流,促进技术合作。 第三节 科技文献的特点及类型 1.什么是科技文献? 含有知识内容的信息载体。 2.构成文献的三要素:...

Global site tag (gtag.js) - Google Analytics