ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

log4j 使用介绍

2020-08-30 09:01:51  阅读:306  来源: 互联网

标签:输出 文件 指定 介绍 log4j 使用 日志 appender


Log4j组件

Log4j主要有Loggers(日志记录器)、Appenders(输出端)和Layout(日志格式化器)组成。
其中Loggers控制日志的输出级别与日志是否输出,Appenders指定日志的输出方式(输出到控制到,文件等),Layout控制日志信息的输出格式。

Log4j的日志级别(默认级别:Debug):

  • FATAL - 严重错误
  • ERROR - 错误信息
  • WARN - 警告信息
  • INFO - 运行信息
  • DEBUG - 调试信息
  • TRACE - 追踪信息

Log4j常用的输出位置有以下几种:

输出端类型 介绍
ConsoleAppender 将日志输出到控制台
FileAppender 将日志输出到文件中
DailyRollingFileAppender 将日志输出到日志文件中,并且每天生成一个新文件
RollingFileAppender 将日志输出到日志文件中,并且指定文件的尺寸,当文件大小达到指定大小后,会自动把文件更名,并生成一个新的文件
JDBCAppender 将日志信息保存到数据库中

Log4j常用的Layout:

格式化类型 介绍
HTMLLayout 格式化日志输出为HTML表格形式
SimpleLayout 简单的日志输出格式化,打印的日志格式为(info - message)
PatternLayout 最强大的格式化器,可以根据自定义格式输出日志,如果没有指定转换格式,就用默认的转换格式

HTMLLayout:
HTMLLayout

自定义消息格式常用(conversionPattern):

  • %m 输入代码中指定的日志信息
  • %p 输出优先级,即DEBUG、INFO等
  • %r 输出自应用启动到输出该log信息耗费的毫秒数
  • %c 输出打印语句所属的全限定名
  • %t 输出产生该日志的线程全名
  • %d 输出服务器当前时间,默认为IS08601,也可以指定格式,如:%d{yyyy-MM-dd HH:mm:ss:SSS}
  • %l 输出日志发生的位置,包括类名、线程名以及代码的行数,如:Test.main(Test.java:10)
  • %F 输出日志消息产生时,所在的文件名称
  • %L 输出代码的行数
  • %% 输出一个"%"字符
  • %n 换行符

可以在 % 与字符之间加上修饰符来控制最小宽度、最大宽度和文本对齐方式。如:

  • %5c 输出category,最小宽度是5,category<5,默认情况下为右对齐
  • %5c 输出category,最小宽度是5,category<5,- 指定左对齐,产生空格
  • %.5c 输出category,最大宽度是5,category>5,就会将左边多出的字符截掉,<5不会有有空格
  • %20.30c category<20补空格,并且右对齐,>30字符,就会把左边超出的字符截掉
# 指定rootLogger 顶级父元素默认配置信息
# 指定日志级别为info,使用的appender是什么(自定义名称)
log4j.rootLogger = trace,logDB

# 自定义logger对象
#log4j.logger.cn.sivan = info,file
#log4j.logger.org.apache = trace,console

# 指定控制台日志输出的appender
log4j.appender.console = org.apache.log4j.ConsoleAppender
# 指定名称为console的appender 使用的消息格式(layout)
log4j.appender.console.layout = org.apache.log4j.PatternLayout
# 指定消息格式的内容 [test] 文件的开头
log4j.appender.console.layout.conversionPattern = [test][%-10p]%r %l %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n

# 自定义消息格式常用(conversionPattern):
# log4j采用类似c语言的printf函数的打印格式 格式化日志信息,具体的占位符及其含义如下:
# %m  输入代码中指定的日志信息
# %p  输出优先级,即DEBUG、INFO等
# %r  输出自应用启动到输出该log信息耗费的毫秒数
# %c  输出打印语句所属的全限定名
# %t  输出产生该日志的线程全名
# %d  输出服务器当前时间,默认为IS08601,也可以指定格式,如:%d{yyyy-MM-dd HH:mm:ss:SSS}
# %l  输出日志发生的位置,包括类名、线程名以及代码的行数,如:Test.main(Test.java:10)
# %F  输出日志消息产生时,所在的文件名称
# %L  输出代码的行数
# %%  输出一个"%"字符
# %n  换行符

# 可以在 % 与字符之间加上修饰符来控制最小宽度、最大宽度和文本对齐方式。如:
# %5c       输出category,最小宽度是5,category<5,默认情况下为右对齐
# %5c       输出category,最小宽度是5,category<5,- 指定左对齐,产生空格
# %.5c      输出category,最大宽度是5,category>5,就会将左边多出的字符截掉,<5不会有有空格
# %20.30c   category<20补空格,并且右对齐,>30字符,就会把左边超出的字符截掉


# 将日志输出到文件
log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.append = true
# 指定消息格式的内容
log4j.appender.file.layout.conversionPattern = [test][%p]%r %l %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n
# 指定日志文件的保存路径
log4j.appender.file.file = logs/log4j.log
# 指定日志文件的编码
log4j.appender.file.encoding = UTF-8

# 将日志输出到文件 并按照指定大小拆分
log4j.appender.rollingFile = org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.rollingFile.append = true
# 指定消息格式的内容 [test] 文件的开头
log4j.appender.rollingFile.layout.conversionPattern = [test][%p]%r %l %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n
# 指定日志文件的保存路径
log4j.appender.rollingFile.file = logs/log4j.log
# 指定日志文件的编码
log4j.appender.rollingFile.encoding = UTF-8
# 指定日志文件内容的大小
log4j.appender.rollingFile.maxFileSize = 1MB
# 指定日志文件的数量
log4j.appender.rollingFile.maxBackupIndex = 10

# 将日志输出到文件 并按照日期进行拆分
log4j.appender.dailyFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyFile.append = true
# 指定消息格式的内容 [test] 文件的开头
log4j.appender.dailyFile.layout.conversionPattern = [test][%p]%r %l %d{yyyy-MM-dd HH:mm:ss:SSS} %m%n
# 指定日志文件的保存路径
log4j.appender.dailyFile.file = logs/log4j.log
# 指定日志文件的编码
log4j.appender.dailyFile.encoding = UTF-8
# 指定日期拆分规则 第二天才会有指定日期格式的名称
log4j.appender.dailyFile.datePattern = '.'yyyy-MM-dd'.log'

# 保存到数据库
log4j.appender.logDB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logDB.layout=org.apache.log4j.PatternLayout
log4j.appender.logDB.BufferSize=1
log4j.appender.logDB.Driver=com.mysql.jdbc.Driver
log4j.appender.logDB.URL=jdbc:mysql://152.136.24.98:3306/db_java?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&rewriteBatchedStatements=true
log4j.appender.logDB.User=root
log4j.appender.logDB.Password=mysql6059@NingChuan
log4j.appender.logDB.Sql=INSERT INTO log(project_name,create_date,level,category,file_name,thread_name,line,all_category,message) values('test','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')

标签:输出,文件,指定,介绍,log4j,使用,日志,appender
来源: https://www.cnblogs.com/sivanchan/p/13580629.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有