log4j指定类的日志输出到指定文件夹中

在tomcat中运行的程序,需要指定类打印日志,并输出到指定文件夹。

业务需求需要将登录、登出、办理开始到结束流程的日志以特定的json格式,输出到对应的日志文件中,并且定期更新日志。

LogRequestFilter 为需要打印的日志类,并且以INFO等级输出;

log4j.properties中的配置文件如下:

log4j.logger.LogRequestFilter = INFO, LogRequestFilter log4j.appender.LogRequestFilter = org.apache.log4j.DailyRollingFileAppender

//特定文件夹下的日志文件名称 log4j.appender.LogRequestFilter.File =./logs/zjxt_access_log.log log4j.appender.LogRequestFilter.File.DatePattern= .yyyy-MM.log log4j.appender.LogRequestFilter.Append = true

//日志级别 log4j.appender.LogRequestFilter.Threshold = INFO log4j.appender.LogRequestFilter.layout = org.apache.log4j.PatternLayout log4j.appender.LogRequestFilter.layout.ConversionPattern = %m%n

还有一种配置在log4j.xml中,但是启动tomcat并没有输出日志,具体问题还需要在查找;

为什么不能输出对应的日志文件?

<?xml version="1.0" encoding="UTF-8"?> <Configuration monitorInterval="1800"> <Properties> <Property name="appName" value="log-demo" /> <Property name="version" value="1.0.0" /> <!-- 定义日志存储的路径 --> <property name="FILE_PATH" value="logs" /> <property name="FILE_NAME" value="zj" /> </Properties> <Filter type="ThresholdFilter" level="trace" />

<Appenders> <Console name="console" target="SYSTEM_OUT"> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" /> </Console> <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --> <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/zjxt_access_log.log" filePattern="${FILE_PATH}/zjxt_access_log-INFO-%d{yyyy-MM-dd}_%i.log.gz"> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%m%n" /> <Policies> <!--interval属性用来指定多久滚动一次,默认是1 hour --> <TimeBasedTriggeringPolicy interval="1" /> <SizeBasedTriggeringPolicy size="10MB" /> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖 --> <DefaultRolloverStrategy max="15" /> </RollingFile> </Appenders> <Loggers> <Logger name="LogRequestFilter" level="INFO" > <appender-ref ref="RollingFileInfo" /> </Logger> <Root level="WARN"> <AppenderRef ref="console" /> </Root> </Loggers> </Configuration>

经验分享 程序员 微信小程序 职场和发展