log4j2.xml配置,指定某个方法单独文件打印日志

log4j2.xml 配置如下:


<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF" monitorInterval="1800">
	<Properties>
		<!-- 配置日志文件输出目录 -->
		<Property name="LOG_HOME">E:\\logs\\AliAPI</Property>
		<property name="FILE_NAME">AliAPI</property>
	</Properties>
	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<!-- %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间 %p : 日志输出格式 %c : logger的名称 
				%m : 日志内容,即 logger.info("message") %n : 换行符 %C : Java类名 %L : 日志输出所在行数 %M 
				: 日志输出所在方法名 hostName : 本地机器名 hostAddress : 本地ip地址 -->
			<PatternLayout
				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} 
                %L %M - %msg%xEx%n" />
		</Console>

		<RollingRandomAccessFile name="runFile"
			fileName="${LOG_HOME}/run.log" filePattern="${LOG_HOME}/run/run-%d{yyyy-MM-dd-HH}-%i.log">
			<PatternLayout
				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} 
                %L %M - %msg%xEx%n" />
			<Policies>
				<!--每小时生成一个文件,共记录近6小时日志 -->
				<TimeBasedTriggeringPolicy interval="1"
					modulate="true" />
			</Policies>
			<!-- 最大保存文件数 -->
			<DefaultRolloverStrategy>
				<Delete basePath="${LOG_HOME}/run" maxDepth="1">
					<IfFileName glob="run-*.log" />
					<IfLastModified age="6H" />
				</Delete>
			</DefaultRolloverStrategy>
		</RollingRandomAccessFile>

		<RollingRandomAccessFile name="runErrFile"
			fileName="${LOG_HOME}/runerr.log" filePattern="${LOG_HOME}/runerr/runerr-%d{yyyy-MM-dd-HH-mm}-%i.log">
			<PatternLayout
				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} 
                %L %M - %msg%xEx%n" />
			<Policies>
				<!-- 每小时生成一个文件,共记录近2小时业务错误日志,10分钟一个日志文件 -->
				<TimeBasedTriggeringPolicy interval="10"
					modulate="true" />
			</Policies>
			<!-- 最大保存文件数 -->
			<DefaultRolloverStrategy>
				<Delete basePath="${LOG_HOME}/runerr" maxDepth="1">
					<IfFileName glob="runerr-*.log" />
					<IfLastModified age="12M" />
				</Delete>
			</DefaultRolloverStrategy>
		</RollingRandomAccessFile>

		<!-- 这个会打印出所有的信息 -->
		<!-- 按年份-月份建立的文件夹下面并进行压缩,作为存档,共保留100天压缩后日志 -->
		<RollingRandomAccessFile name="dayFile"
			fileName="${LOG_HOME}/${FILE_NAME}.log" filePattern="${LOG_HOME}/day/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
			<PatternLayout
				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
			<Policies>
				<TimeBasedTriggeringPolicy interval="1"
					modulate="true" />
			</Policies>
			<DefaultRolloverStrategy>
				<Delete basePath="${LOG_HOME}/day" maxDepth="1">
					<IfFileName glob="${FILE_NAME}-*.log.gz" />
					<IfLastModified age="200D" />
				</Delete>
			</DefaultRolloverStrategy>
		</RollingRandomAccessFile>

		<!-- 指定某个方法单独文件打印日志 -->
		<RollingRandomAccessFile name="runParamFile"
								 fileName="${LOG_HOME}/param.log" filePattern="${LOG_HOME}/param/param-%d{yyyy-MM-dd-HH-mm}-%i.log">
			<PatternLayout
					pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}
                %L %M - %msg%xEx%n" />
			<Policies>
				<!-- 每小时生成一个文件,共记录近2小时业务错误日志,10分钟一个日志文件 -->
				<TimeBasedTriggeringPolicy interval="10"
										   modulate="true" />
			</Policies>
			<!-- 最大保存文件数 -->
			<DefaultRolloverStrategy>
				<Delete basePath="${LOG_HOME}/param" maxDepth="1">
					<IfFileName glob="param-*.log" />
					<IfLastModified age="12M" />
				</Delete>
			</DefaultRolloverStrategy>
		</RollingRandomAccessFile>

	</Appenders>
	<Loggers>
		<Logger name="com.wondersgroup.sbpc" level="error" additivity="true">
			<AppenderRef ref="runErrFile" />
		</Logger>

		<Logger level="warn" name="org.springframework" additivity="true" />

		<Logger name="paramLogger" level="info" additivity="true">
			<AppenderRef ref="runParamFile" />
		</Logger>

		<root level="info" includeLocation="true">
			<AppenderRef ref="dayFile" />
			<AppenderRef ref="Console" />
			<AppenderRef ref="runFile" />
		</root>
	</Loggers>
</configuration>

代码对应的是

    Logger logger = LoggerFactory.getLogger(getClass());

    Logger paramLogger = LoggerFactory.getLogger("paramLogger");

变量paramLogger对应的配置是

<Logger name="paramLogger" level="info" additivity="true">
	<AppenderRef ref="runParamFile" />
</Logger>
使用 paramLogger.info()方法,会生成日志文件param.log

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在 logback-spring.xml 文件配置 `rollingPolicy` 和 `fileNamePattern` 实现每天单独一个日志文件的功能。具体配置如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志输出文件的路径 --> <file>/var/log/myapp/myapp.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天生成一个文件 --> <fileNamePattern>/var/log/myapp/myapp.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 保留最近7天的日志文件 --> <maxHistory>7</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="FILE" /> </root> </configuration> ``` 在上面的配置中,`rollingPolicy` 的 `class` 属性设置为 `ch.qos.logback.core.rolling.TimeBasedRollingPolicy`,表示按时间分割日志文件。`fileNamePattern` 属性指定日志文件的命名格式,由于我们想要每天生成一个文件,因此使用 `%d{yyyy-MM-dd}` 格式,表示以年、月、日为单位进行分割。 以上面的配置为例,每天会生成一个名为 `/var/log/myapp/myapp.2021-01-01.log` 的日志文件,如果在同一天内多次启动应用程序,则会向同一个日志文件中追加日志。如果跨天启动应用程序,则会生成一个新的日志文件。 注意,`maxHistory` 属性表示最多保留多少天的历史日志文件,超过该时间的日志文件将被自动删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值