log4j有三个主要的组件,分别是:
- Logger(记录器):负责按照设定的优先级过滤日志信息,然后转发到存放器
- Appender(存放器):负责接收并处理记录器转发来的日志信息,通常的处理是输出到屏幕或者存储到磁盘文件
- Layout(布局器):负责格式化日志信息
上述三者之间的关系:
一个Logger可以挂接多个Appender(日志信息同时转发到多个设备)
一个Appender指定一个Layout进行格式化操作
一、定义配置文件log4j.properties
- log4j.记录器名称=[ 级别 ] , 存放器名称1, 存放器名称2, …
级别优先级由高到低依次是:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
log4j建议只使用四个级别,优先级从高到低分别是:ERROR、WARN、INFO、DEBUG
只有优先级高于或等于设定级别的日志信息被转发
log4j.rootLogger是所有记录器的父对象(原名rootCategory已废弃),可用于设定所有记录器的缺省优先级
记录器可以继承,如:log4j.myLogger.childLogger=,file
记录器按名字获得,第一次访问时自动创建(总是存在)
如果约定每个类都只向其同名记录器输出日志,则在配置文件中可以针对每一个特定类进行日志配置
- log4j.appender.存放器名称=存放器类名
目前,log4j实现的存放器类有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
- log4j.appender.存放器名称.layout=布局器类名
目前,log4j实现的布局器类有以下几种:
org.apache.log4j.PatternLayout(log4j的标准布局器,可以灵活地指定布局模式)
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.SimpleLayout(包含级别和日志信息的简单字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
- 设定布局器选项(主要是设定转换格式)
log4j.appender.存放器名称.layout.选项名=值
通常采用log4j的标准布局器:
log4j.appender.存放器名称.layout=org.apache.log4j.PatternLayout
log4j.appender.存放器名称.layout.ConversionPattern=格式化参数
log4j采用类似C语言中printf函数的格式化参数格式化日志信息,参数如下:
%m 输出代码中指定的信息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自布局器构造到该时间点所经过的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出该时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式。如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:08 十二月 03 12:04:52,531
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如:Testlog4.main(TestLog4.java:10)
%F 输出文件名
%L 输出行号
二、在代码中调用log4j
- 将log4j的jar包(log4j-1.2.15.jar)导入到工程中。
- 写配置文件log4j.properties,放在src目录下,系统运行时自动拷贝到bin目录下。
import org.apache.log4j.Logger;
...
private static final Logger log = Logger.getLogger(类名.class);
...
log.debug( Object message );
log.info( Object message );
log.warn( Object message );
log.error( Object message );
三、log4j.properties的例子
# Set root logger priority to INFO and its only appender to CONSOLE.
log4j.rootLogger=INFO, CONSOLE
log4j.rootLogger=INFO, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.CONSOLE.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=INFO
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
四、常见故障
- log4j:WARN Please initialize the log4j system properly.
解决办法:
【eclipse环境】将文件log4j.properties拷贝到src目录下,运行时会自动拷贝到bin目录下。之前可能需要Refresh。
分享到:
相关推荐
log4j运用,该文档是一个可以直接使用的log4j配置文档,里面包含项目中所有可能会使用到的配置,并加以说明各个配置的功能,相信对大家一定有用。需要特别注意的是,该文档中的各个配置在使用的时候请更具项目情况...
log4j2依赖 的包和配置详细解答,主要是依赖的包要完整,同时配置要正确,需要注意的是路径的设置,根据不同的tomcat配置不同路径。
当tomcat的server.xml的配置内包含时 DailyRollingFileAppender 类不能正确重命名。 log4j DailyRollingFileAppender 类不能正常重命名
重写log4j流记录日志到指定文件采用了xml,properties文件配置,日志记录容量达到指定配置文件最大容量大小,自动增加新日志文件,配置简单。只需要把log4.xml,log4j.properties文件复制到src目录中,源码文件放在...
本文主要介绍了在 Spring Boot 框架中如何使用 Log4j 和 Slf4j,并通过对比分析它们的优缺点,帮助读者更好地选择合适的日志记录工具。...无论选择哪个框架,都应确保正确配置并遵循最佳实践来获得最佳的日志记录效果。
log4j-s3-搜索 实现,它将日志事件收集到暂存缓冲区中直至达到配置的大小,然后将其发布到外部存储,例如: 适用于远程存储/归档的 。 用于远程存储/存档。 用于远程存储/存档。 用于搜索的 。 搜索。 上面的所有...
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/312504
log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] [Azkaban] %m%n 5. 在azkaban-exec-server目录下...
需要正确配置java环境,ANDROID_HOME开发环境,ANT_HOME开发环境。 三 使用说明 1 使用前期事项 将ant,auto, build,custom_rules,log4j文件放到项目文件目录下。 文件说明:ant文件中 key.store=加密文件 key....
* syslog分类模型,基于规则路由过滤,比log4j模型要正确高效,详见为什么log4j的概念模型是错误的。 * 日志格式定制,类似于log4j的pattern layout * 多种输出,包括动态文件、静态文件、stdout、...
下载之后您只需要1.根据实体类创建数据库 2.jdbc.property填写正确 3.项目加载 运行 这里你将学习到: 前台: 公共类库 Juqery 公共组件 表格:jqueryeasyui datagrid ...11 利用log4j输出程序日志 12 无刷新翻页
尽管这非常有用,但是正确配置Java一直很复杂。 幸运的是,Java中两个主要的日志记录“后端”(log4j和“ java.util.logging”)都支持编程配置,因此可以很容易地用Clojure程序员更轻松,更灵活地替换配置文件机制...
JSP在线销售管理系统,简易java(easyjf)框架开源订销管理系统(测试版),服务器环境,tomcat... 4、系统使用Log4j-1.2 作为日志系统,通过更改Web-inf\classes\log4j.properties 的设置可以查看系统运行的详细日志信息.
2. 程序用log4j记录日志,日志分正常信息跟错误信息两个级别,日志文件存放在log4j文件夹下。考虑到文件很多,日志解压、移动文件每解压、移动1000个记录一次,合并、删除文件每合并、删除50000个记录一次, 3. 启动...
log4j-1.2.13.jar poi-3.7-20101029.jar poi-ooxml-3.7-20101029.jar poi-ooxml-schemas-3.7-20101029.jar 其主要优点是: 可以灵活的配置文件的格式校验。 能明确的显示多少行多少列数据不正确 工具写的不是很...
根据应用显示/隐藏日志根据名称空间显示/隐藏日志根据日志级别和表达式过滤输出配置日志类型和端口问题如果时间戳不正确(例如,按x小时关闭):只需删除所有文件夹并重新启动应用程序,即可从C:\ Users \您的...
使用Maven过滤器“功能”将Maven属性添加到资源过滤目录中存储的文件中的代码中……具体来说,使用项目名称更新api.base和log4j2配置。 目的 该项目是一个示例,可以进行部署,并在正确配置后运行。 但是,此方法的...
mule4-skeleton-system-api 这是使用API管理的API的Mule 4.1示例,可...目的该项目是一个示例,可以进行部署,并在正确配置后运行。 但是,此方法的主要用法是构建新API的起点。 API的开发人员可以复制此项目,以获
该方法主要受Insight-log4j项目的影响(请参阅: : ) 为什么 在我们的项目中,我们只想从应用程序中访问我们最新的(基于Logback的)日志输出 未清项目 *添加Maven坐标支持*添加更好的谓词过滤支持*并非总是确定...
R5 I* ~: k6 g1 B$ @4 Z- j' B ( y: ] o$ r9 C( \/ x5 b @: a站点(Site)是由一个或多个IP子网中的一组计算机,确保目录信息的有效交换,站点中的计算机需要很好地连接,尤其是子网内的计算机。站点和域名称空间...