log4j2 日志配置

log4j2.properties 配置

由于最近有一些特殊的需求:异常日志邮件异步发送配置 等等需求。原有的简单配置不能满足现有需求,特做此笔记,留作备忘也同时希望帮助一部分人
如有错误欢迎留言指正…

日志输出文件效果
1、不同的日志输出到单独的文件
2、指定日志文件每天生成一个文件,并放到统一的时间文件夹下

配置参数详解

log4j2 配置日志内容格式、说明:

日志文件内容的格式,说明:
%n-换行
%m-日志内容
%p-日志级别(FATAL,ERROR,WARN…)
%F-java源文件名
%t 输出产生该日志事件的线程名
%d 输出日志时间点的日期或时间
%L-java源码行数
%C-java类名
%M-java方法名

#用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
status = debug
dest = err
name = PropertiesConfig
#存放日志目录(这里也可以配置绝对路径)
property.filePath=logs/today
#配置日志文件目录
property.patternTop=logs/%d{yyyy-MM-dd}
#配置日志文件后缀,按天生成新文件(日志量小使用每天)
property.patternTail=_%d{yyyy-MM-dd}.log
#配置日志文件后缀,按小时生成新日志文件(日志量大使用每小时)
property.patternHourTail=_%d{yyyy-MM-dd-HH}.log
#控制台输出格式配置
property.consolePattern=%-d{yyyy-MM-dd HH:mm:ss} [ %c - %p ] [ %t - %C(%M) - %L] %m%n
#文件输出格式配置
property.layoutPattern=%m%n

这里就不标黑了
日志级别过滤(我会使用跟记录器的过滤,所以我不用这里的过滤,看个人是使用习惯)
filter.threshold.type = ThresholdFilter
#只记录debug级别以上的日志,大小写无关:(ALL<)TRACE filter.threshold.level = debug

#控制台类型的日志输出源

appender.console.type=Console
#输出源的名称
appender.console.name=STDOUT
#输出布局类型
appender.console.layout.type=PatternLayout
#输出模板
appender.console.layout.pattern=${consolePattern}
appender.console.filter.threshold.type=ThresholdFilter
#日志级别
appender.console.filter.threshold.level=INFO

配置文件输出日志(这里第一行我习惯使用一个参数,这样方便以后更改名字,懒人必备)

property.consoleLog=consoleLog
#文件日志输出源
appender.consoleLog.type=RollingFile
#日志名
appender.consoleLog.name=${consoleLog}Name
#日志文件名
appender.consoleLog.fileName=${filePath}/${consoleLog}.log
#指定当发生文件滚动时,文件重命名规则
appender.consoleLog.filePattern=${patternTop}/${consoleLog}${patternTail}
appender.consoleLog.layout.type=PatternLayout
appender.consoleLog.layout.pattern=${consolePattern}
appender.consoleLog.policies.type=Policies
#配置根据天数生成新的日志文件
appender.consoleLog.policies.time.type=TimeBasedTriggeringPolicy
appender.consoleLog.policies.time.interval=1
appender.consoleLog.policies.time.modulate=true
#配置根据文件大小生成新日志文件 使用此配置
#appender.consoleLog.policies.size.type=SizeBasedTriggeringPolicy
#appender.consoleLog.policies.size.size=500M
appender.consoleLog.filter.threshold.type=ThresholdFilter
appender.consoleLog.filter.threshold.level=INFO
#文件保存的覆盖策略 - 按天删除
appender.consoleLog.strategy.type=DefaultRolloverStrategy
appender.consoleLog.strategy.delete.type=Delete
appender.consoleLog.strategy.delete.basePath=logs
appender.consoleLog.strategy.delete.maxDepth=2
appender.consoleLog.strategy.delete.iffile.type=IfFileName
appender.consoleLog.strategy.delete.iffile.glob=*/${consoleLog}*.log
appender.consoleLog.strategy.delete.iflastmodify.type=IfLastModified
#设置删除时间、删除7天前
appender.consoleLog.strategy.delete.iflastmodify.age=7d

logger.consoleLog.name=${consoleLog}
#日志级别
logger.consoleLog.level=all
#是否向上级logger传递信息
logger.consoleLog.additivity=true
logger.consoleLog.appenderRef.all.ref=${consoleLog}Name

配置异常日志单独输出(ERROR级别)

property.errorLog=errorLog
appender.errorLog.type=RollingFile
appender.errorLog.name=${errorLog}Name
appender.errorLog.fileName=${filePath}/${errorLog}.log
appender.errorLog.filePattern=${patternTop}/${errorLog}${patternTail}
appender.errorLog.layout.type=PatternLayout
appender.errorLog.layout.pattern=${consolePattern}
appender.errorLog.policies.type=Policies
appender.errorLog.policies.time.type=TimeBasedTriggeringPolicy
appender.errorLog.policies.time.interval=1
appender.errorLog.policies.time.modulate=true
appender.errorLog.filter.threshold.type=ThresholdFilter
appender.errorLog.filter.threshold.level=error

logger.errorLog.name=${errorLog}
logger.errorLog.level=all
logger.errorLog.additivity=false
logger.errorLog.appenderRef.all.ref=${errorLog}Name

配置 logicLog 日志 (这个名字可以自定义,直接复制以下代码全局替换即可)
配置多个日志文件,就无限复制以下配置,全局替换名字即可

property.logicLog=logicLog
appender.logicLog.type=RollingFile
appender.logicLog.name=${logicLog}Name
appender.logicLog.fileName=${filePath}/${logicLog}.log
appender.logicLog.filePattern=${patternTop}/${logicLog}${patternTail}
appender.logicLog.layout.type=PatternLayout
appender.logicLog.layout.pattern=${consolePattern}
appender.logicLog.policies.type=Policies
appender.logicLog.policies.time.type=TimeBasedTriggeringPolicy
appender.logicLog.policies.time.interval=1
appender.logicLog.policies.time.modulate=true
appender.logicLog.filter.threshold.type=ThresholdFilter
appender.logicLog.filter.threshold.level=INFO

logger.logicLog.name=${logicLog}
logger.logicLog.level=all
#是否打印到控制台
logger.logicLog.additivity=true
#输出到文件中
logger.logicLog.appenderRef.all.ref=${logicLog}Name
#重定向到文件中(这里也是可以配置单独重定向的,我这里使用的跟记录器重定向)
#logger.logicLog.appenderRef.stdout.ref=${consoleLog}Name

配置日志过滤,方便查看自己想要输出的日志

#设置过滤掉Netty日志
logger.Netty.name=io.netty
logger.Netty.level=ERROR

配置邮件

property.email=SmtpMail
appender.email.type=SMTP
appender.email.name=${smtpMail}Name
appender.email.subject=Error Log Title
#发件箱
appender.email.from=
#这个端口我使用的QQ邮箱,如果使用其他邮箱,需要修改port 和 host
appender.email.SMTPPort=587
appender.email.SMTPHost=smtp.qq.com
#邮件账号(通常和from 配置一样即可)
appender.email.SMTPUsername=
#邮箱smtp密码(邮箱开通smtp邮箱会生成这个密码)
appender.email.SMTPPassword=
appender.email.SMTPDebug=false
#收件人
appender.email.to=
#抄送人(如果需要同步发送到多个邮箱,配置此项)
appender.email.cc=
#onMatch="ACCEPT" 表示匹配该级别及以上
#onMatch="DENY" 表示不匹配该级别及以上
#onMatch="NEUTRAL" 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上
#onMismatch="ACCEPT" 表示匹配该级别以下
#onMismatch="NEUTRAL" 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的
#onMismatch="DENY" 表示不匹配该级别以下的
appender.email.filter.threshold.type=ThresholdFilter
appender.email.filter.threshold.level=ERROR
appender.email.filter.threshold.onMatch=ACCEPT
appender.email.layout.type=PatternLayout
appender.email.layout.pattern=${consolePattern}

#配置异步发送邮件

property.async=AsyncMail
appender.async.type=Async
appender.async.name=${asyncMail}Name
appender.async.includeLocation=true
appender.async.mail.type=AppenderRef
appender.async.mail.level=ERROR
appender.async.mail.ref=${smtpMail}Name

#设置跟记录器

rootLogger.appenderRefs=rolling
rootLogger.includeLocation=true
rootLogger.level=ALL
#配置控制台日志
rootLogger.appenderRef.STDOUT.ref=STDOUT
#配置控制台日志输出文件
rootLogger.appenderRef.consoleLog.ref=${consoleLog}Name
#配置Error级别的日志
rootLogger.appenderRef.errorLog.level=ERROR
rootLogger.appenderRef.errorLog.ref=${errorLog}Name
#按照错误级别打印到不同appender
rootLogger.appenderRef.asyncMail.level=ERROR
rootLogger.appenderRef.asyncMail.ref=${asyncMail}Name

如需配置项目启动指定外部配置文件
-Dlog4j.configurationFile="$DIR/config/log4j2.properties"

你可能感兴趣的:(日志文件配置,log4j2)