首页 > 编程知识 正文

logback和slf4j关系,log4j的使用

时间:2023-05-04 13:13:34 阅读:126821 作者:4422

首先,slf4j是一组抽象的模板接口,没有实现日志记录功能。 log4j是slf4j的具体实现。

缺省情况下,java项目将读取java文件同级目录下的log4j配置文件。 也就是说,只要将log4j.properties或log4j.xml放在src/main/java下,就可以直接使用。

如果我们引用的jar也需要内部日志打印,则它可能与当前项目日志打印中的log4j.properties冲突。 可以通过一个命令确定使用哪个日志配置文件。

Java-jar-d log4j.debug *.jar *.jar表示正在运行的jar 1.配置根日志程序

如何配置根日志程序:

log4j.rootLogger=DEBUG,Console,File rootLogger配置详细信息

级别是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或自定义级别,默认优先级为ALL DEBUG INFO WARN ERROR FATAL OFF

Log4j建议只使用四个级别:错误、广域网、信息和调试。 此处定义的级别允许您控制与APP应用程序中相应级别的日志信息的切换。 例如,如果在此定义INFO级别,则不会打印APP应用程序中所有调试级别的日志信息。

之后由Console、File等控制的是日志的输出目标,称为appenderName。 在appenderName中,可以同时指定多个目标。 例如,上面定义了控制台和文件。

appenderName也同样支持5种

org.Apache.log4j.console appender )控制台

org.apache.log4j.FileAppender (

org.Apache.log4j.dailyrollingfileappender (每天生成一个日志文件) )。

org.Apache.log4j.rolling file appender (文件大小达到指定大小时生成新文件) ) ) )。

org.Apache.log4j.writer appender (以流格式将日志信息发送到任意指定位置) ) ) ) ) ) ) ) ) ) )。

各appender的构成如下

ConsoleAppenderThreshold=WARN :指定日志消息输出的最低级别。 ImmediateFlush=true :默认值为true,表示所有消息都将立即输出。 Target=System.err :缺省为System.out,指定输出控制台FileAppenderThreshold=WARN。 指定日志消息输出的最低级别。 ImmediateFlush=true :默认值为true,表示所有消息都将立即输出。 file=mylog.txt :指定将消息输出到mylog.txt文件。 Append=false :默认值为true,用于将消息添加到指定文件。 false是指将消息复盖到指定文件的内容中。 dilyrollingfileappenderthreshold=warn :指定日志消息输出的最低级别。 ImmediateFlush=true :默认值为true,表示所有消息都将立即输出。 file=mylog.txt :指定将消息输出到mylog.txt文件。 Append=false :默认值为true,用于将消息添加到指定文件。 false是指将消息复盖到指定文件的内容中。 DatePattern=”.”yyyy-ww:每周滚动一次文件,每周生成新文件。 当然也可以指定月、周、日、时、分。 即1 )、" yyyy-MM:每月2 )、" yyyy-ww:每周3 )、" yyyy-MM-dd:每天4 )、" yyyy-MM-dd-a:每天2次、5次ImmediateFlush=true :默认值为true,表示所有消息都将立即输出。 file=mylog.txt :指定将消息输出到mylog.txt文件。 Append=false :默认值为true,用于将消息添加到指定文件。 false是指将消息复盖到指定文件的内容中。 MaxFileSize=100KB :后缀为KB、MB或GB。 当日志文件达到此大小时,它会自动滚动,并将原始内容移动到mylog.log.1文件。 MaxBackupIndex=2:指定可以生成的滚动文件的最大数量。 3 .配置日志信息的格式(布局)

如何配置日志信息格式:

log4j.appender.appender name.layout=log4j提供的layout类

log4j.appender.appender name.layout .属性=值

.

log4j.appender.appender name.layout .属性=值

日志信息格式详细信息

Log4j提供的layout包括:

org.apache.log4j

.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)HTMLLayoutLocationInfo=true:默认值是false,输出java文件名称和行号 Title=my app file:默认值是 Log4J Log MessagesPatternLayoutConversionPattern=%m%n:指定怎样格式化指定的消息。XMLLayoutLocationInfo=true:默认值是false,输出java文件和行号 Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:og4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

日志信息格式中几个符号所代表的含义:

-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,
比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及行数。
举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”rn”,Unix平台为”n”输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,”-“号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉

下面附上一个配置文件,做参考

log4j.rootLogger=DEBUG,Console,File,DailyRollingFilelog4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.outlog4j.appender.Console.layout = org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=%d %p %c.%M()-%m%nlog4j.appender.File = org.apache.log4j.RollingFileAppenderlog4j.appender.File.File = E:/log/myLog.loglog4j.appender.File.MaxFileSize = 1kBlog4j.appender.File.Threshold = WARNlog4j.appender.File.layout = org.apache.log4j.PatternLayoutlog4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m%nlog4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.DailyRollingFile.File = E:/log/daily/loglog4j.appender.DailyRollingFile.DatePattern=yyyy-MM-dd-HH-MM'.log' log4j.appender.DailyRollingFile.layout=org.apache.log4j.PatternLayoutlog4j.appender.DailyRollingFile.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n

具体请参考博客:
https://blog.csdn.net/eagleuniversityeye/article/details/80582140

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。