当前位置:网站首页>logback不同的包(业务日志)输出到不同日志文件
logback不同的包(业务日志)输出到不同日志文件
2022-07-16 08:52:00 【程序猿(攻城狮)】
记录日志的主要用途之一就是为了在有问题的时候能够方便的查找问题原因,但有时日志太多也会造成大量的磁盘空间占用,所以需要进行合适的日志存储配置。
一个可行的办法就是针对不同的日志类型,配置单独的日志存储策略,包括文件名,滚动策略以及最大日志数量。
1. 定义日志输出文件
<!-- 业务日志输出 -->
<appender name="biz_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/biz_info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/biz-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志保留最大 60个 -->
<maxHistory>60</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>maxHistory: 参数表示保留日志文件的最大个数
{yyyy-MM-dd}: 参数表示按天分割文件,{yyyy-MM-dd-HH}表示按小时分割文件。因为时间格式化出来的字符串和之前的字符串不相同,则重新生成一个文件。此时生成文件名中,还需要增加-%i
cleanHistoryOnStart:设置为true,表示启动的时候清除多余的日志。
<!-- 业务日志输出 -->
<appender name="biz_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/biz_info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/biz-info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<!-- 日志保留最大 60个 -->
<maxHistory>60</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>timeBasedFileNamingAndTriggeringPolicy:按文件大小进行切分。
2. 定义logger
<!--业务日志-->
<logger name="biz_info" level="info" additivity="false">
<appender-ref ref="biz_info"/>
</logger>additivity="false"表示这里的日志不写入root对应的logger。
3. 定义logger变量
private static final Logger log = LoggerFactory.getLogger("biz_info");需要记录日志的类,定义logger变量。
4. 记录日志
log.info("列表显示");按照正常的方式记录日志即可。
边栏推荐
猜你喜欢

Entrevue de Test logiciel: Pourriez - vous me dire quel est le bogue le plus précieux que vous avez trouvé dans votre travail?

MRP的基本任务是什么

以Celsius为反面教材,手把手教大家判断产品好坏、避开投资风险

What is the composition of CPU

How apisik integrates with Hydra to build a centralized authentication gateway to help enterprise security

全局变量、局部变量、静态变量和常量的地址分配

Full decentralization of social networks
![[live registration] oceanbase in simple terms, issue 7](/img/d8/a367c26b51d9dbaf53bf4fe2a13917.png)
[live registration] oceanbase in simple terms, issue 7
![[training Day2] cinema ticket [combinatorics] [Cartland number]](/img/39/a87cef4d6dc1b393b78f7fa4f71be1.png)
[training Day2] cinema ticket [combinatorics] [Cartland number]

从IT研发人员离职工作交接想到的
随机推荐
ReFi夏季升温:Uniswap v3和绿色资产池在Celo上启动
What are the key smart contracts in defi?
Elaticsearch安装越南语分词器
Use tcpkill to block packets of the specified TCP connection
在okcc中你了解呼叫并发的含义吗?
Refi heating up in summer: uniswap V3 and green asset pool are launched on CELO
【初始C语言】/*字符函数和字符串函数模拟实现详解*/
What is the composition of CPU
Kubedm install kubernetes 1.15 best practices
bbox center-size representation and corners representation
From it R & D staff turnover thought
重邮SYDTEK实习(一): 4k和BLE profile烧录
PG运维篇--错误日志和慢日志
ELK集群部署(九)之logstash过滤规则
使用 tcpkill 阻断指定 TCP 连接的数据包
助力开发者,全方位解读 APISIX 测试案例
[training Day1] spy dispatch [minimum spanning tree]
ValueError: The number of FixedLocator locations (7), usually from a call to set_ ticks, does not mat
Finding palindrome prime number in C language
GPU accelerated opencv Library & reconfigure and generate opencv CUDA version using cmake and vs2019