日志门面和日志框架(日志实现框架log4j配置文件log4j.properties)

一、log4j.properties layout属性的配置

        org.apache.log4j.PatternLayout 是日常使用最多的layout属性的配置方式。主要配置的是conversionPattern属性。

#根logger
log4j.rootLogger=info,consoleAppender
#配置appender输出格式,其中consoleAppender是自定义的appender的名字
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
#配置输出格式
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.conversionPattern=[%-5p] %r %c %t %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n

二、文件日志

#根logger
log4j.rootLogger=info,fileAppender
#配置文件输出格式
log4j.appender.fileAppender = org.apache.log4j.FileAppender
log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.conversionPattern=[%-5p] %r %c %t %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n
#文件路径
log4j.appender.fileAppender.file = F:\\log4j.log
#日志文件有中文需要设置字节编码
log4j.appender.fileAppender.encoding=UTF-8


三、日志拆分和压缩

        日志内容太多了,不方便管理和维护。FileAppender提供了好用的子类来进一步的对于文件输出进行处理。RollingFileAppender按照文件大小进行拆分的方式进行操作。

1. RollingFileAppender 按照文件大小拆分

maxFileSize属性:表示指定拆分文件的大小

maxBackupIndex属性:表示指定目录下文件的数量,超过数量,则按照时间覆盖

#根logger
log4j.rootLogger=trace,rollAppender
#RollingFileAppender配置文件输出格式
log4j.appender.rollAppender = org.apache.log4j.RollingFileAppender
log4j.appender.rollAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.rollAppender.layout.conversionPattern=[%-5p] %r %c %t %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n
log4j.appender.rollAppender.file = F:\\log\\log4j.log
#中文需要设置字节编码
log4j.appender.rollAppender.encoding=UTF-8
#指定日志文件内容大小
log4j.appender.rollAppender.maxFileSize=10KB
#指定日志文件的数量
log4j.appender.rollAppender.maxBackupIndex=5


2. DailyRollingFileAppender 按照时间拆分

datePattern属性:表示按照时间进行拆分。默认为按天 '.'yyyy-MM-dd

#根logger
log4j.rootLogger=trace,dailyRollAppender
#DailyRollingFileAppender 按照时间拆分
log4j.appender.dailyRollAppender = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyRollAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyRollAppender.layout.conversionPattern=[%-5p] %r %c %t %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n
log4j.appender.dailyRollAppender.file = F:\\log\\log4j.log
#中文需要设置字节编码
log4j.appender.dailyRollAppender.encoding=UTF-8
#指定日志文件的时间拆分,默认是按天
log4j.appender.dailyRollAppender.datePattern='.'yyyy-MM-dd HH-mm-ss

四、自定义Logger

        创建出来的Logger对象,默认都是继承rootLogger的,也可以自定义logger,让其他logger来继承这个logger。这种继承关系就是按照包结构关系来进行指定的。

        例如我们一直使用的 Logger logger = Logger.getLogger(Log4jTest.class);

        路径就是com.atredhorse.eduservice.Log4jTest;

        它的父logger就是上层的路径或者更上层的路径,直至rootLogger.

        父logger有:

                com.atredhorse.eduservice,com.atredhorse,com,rootLogger

        查看源码可知:在配置文件中对于自定义logger的配置属性就是 log4j.logger.

   自定义Logger的配置文件

#根logger
log4j.rootLogger=trace,consoleAppender
#自定义logger
log4j.logger.com.atredhorse = info,fileAppender

#配置appender控制台输出格式,其中consoleAppender是自定义的appender的名字
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
#配置控制台输出格式
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.conversionPattern=[%-10p] %r %c %t %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n

#配置文件输出格式
log4j.appender.fileAppender = org.apache.log4j.FileAppender
log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.conversionPattern=[%-5p] %r %c %t %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n
log4j.appender.fileAppender.file = F:\\log\\log4j.log
#中文需要设置字节编码
log4j.appender.fileAppender.encoding=UTF-8

观察结果:

        从输出位置来看,控制台和日志文件都输出了信息。所以得出结论,如果根节点的logger和自定义父logger配置的输出位置是不同的,则取二者的并集,配置的位置都会进行输出操作。

        如果两者配置的级别不同,主要以按照自定义的父logger的级别输出为主。

猜你喜欢

转载自blog.csdn.net/weixin_51725434/article/details/128686240