首页 > 其他分享 >Logback使用问题汇总

Logback使用问题汇总

时间:2024-09-23 23:34:59浏览次数:8  
标签:xml log logback 汇总 pattern 使用 path config Logback

如何在logback配置中使用application.yml中属性

SpringBoot中logback.xml使用application.yml中属性

示例模板:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 读取spring.application.name中的属性来生成日志文件名 -->
    <springProperty scope="context" name="application_name" source="spring.application.name" defaultValue="localhost"/>

    <!-- 日志存放路径 -->
	<property name="log.path" value="/data/app/logs/{application_name}" />
    <!-- 日志输出格式 -->
	<property name="log.pattern" value="%d [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

	<!-- 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
	</appender>

	<!-- DEBUG级别日志 -->
	<appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/debug.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
			<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 60天 -->
			<maxHistory>60</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>DEBUG</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
	</appender>
	
	<!-- INFO级别日志 -->
	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
			<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 60天 -->
			<maxHistory>60</maxHistory>
		</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>

	<!-- WARN级别日志 -->
	<appender name="file_warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/warn.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
			<fileNamePattern>${log.path}/warb.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 60天 -->
			<maxHistory>60</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>WARN</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
	</appender>
	
	<!-- ERROR级别日志 -->
	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 60天 -->
			<maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
			<!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
			<!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
	
	<!-- 系统模块日志级别控制 -->
	<!--
	<logger name="com.sxmu" level="info" />
	-->
	<!-- Spring日志级别控制  -->
	<logger name="org.springframework" level="warn" />

	<springProfile name="dev,test,pre">
		<!-- 开发,测试,预发环境的时候激活 -->
		<root level="DEBUG">
			<appender-ref ref="console"/>
			<appender-ref ref="file_debug"/>
			<appender-ref ref="file_info"/>
			<appender-ref ref="file_warn"/>
			<appender-ref ref="file_error"/>
		</root>
	</springProfile>

	<springProfile name="prod">
		<!-- 生产环境的时候激活 -->
		<root level="INFO">
			<appender-ref ref="console"/>
			<appender-ref ref="file_info"/>
			<appender-ref ref="file_warn"/>
			<appender-ref ref="file_error"/>
		</root>
	</springProfile>
</configuration>

logback出现大量XXX_IS_UNDEFINED日志文件

loback.xml重命名为logback-config.xml,然后在application.ymlapplication.properties配置中明确指定logback配置文件:

# 日志配置
logging:
  config: classpath:logback-config.xml
#日志配置
logging.config=classpath:logback-config.xml

logback出现大量XXX_IS_UNDEFINED日志文件的问题

标签:xml,log,logback,汇总,pattern,使用,path,config,Logback
From: https://www.cnblogs.com/nuccch/p/18428183

相关文章

  • EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)
    摘要EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势,通过一系列高效的设计改进和搜索方法,实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受限的硬件上有效部署视觉......
  • EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(二)
    文章目录训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法运行以及结果查看测试完整的代码在上一篇文章中完成了......
  • Android与WebView(网页)的使用以及交互,阿里快手拼多多等7家大厂Android面试真题
    <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android=“http://schemas.android.com/apk/res/android”android:layout_width=“match_parent”android:layout_height=“match_parent”android:orientation=......
  • 使用 typed-rest-client 进行 REST API 调用
    typed-rest-client是一个用于Node.js的库,它提供了一种类型安全的方式来与RESTfulAPI进行交互。其主要功能包括:安装typed-rest-client要使用typed-rest-client,首先需要安装它,可以通过npm来安装:$npminstalltyped-rest-client使用typed-rest-client这里假......
  • 百度智能体使用初体验
    1.创建一个专门属于自己的ChatAI百度文心智能体平台给给大家提供了一个可以创建自己ChatAI的机会,文心智能体平台AgentBuilder是百度推出的基于文心大模型的智能体(Agent)平台,支持广大开发者根据自身行业领域、应用场景,选取不同类型的开发方式,打造大模型时代的产品能力。开发者可以......
  • 【idea】log4j和slf4j配合使用问题(2024-9-23最新版本)!
    1、slf4j<!--https://mvnrepository.com/artifact/org.slf4j/slf4j-simple--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version......
  • 【已解决】ElementPlus 的 el-menu 组件如何用 js 控制展开某个子菜单,并在其他组件中
    文章目录需求几次探索官网寻找线索(解决办法)需求我如何用代码来实现ElementPlus的菜单的展开和收缩呢?几次探索尝试通过找到节点之后,使用click事件,失败了//伪代码如下consthandleFindNodeAndClick=()=>{console.log('handleFindNodeAndClick');......
  • IT运维管理工具 WGCLOUD - 使用公共告警消息推送接口
    WGCLOUD的公共告警接口用于外部业务系统调用的告警接口,需要升级到v3.4.5或以上版本只要调用这个接口,就可以将消息同步推送到我们的告警平台,比如邮件,钉钉,企业微信等此接口主要给有告警需求的第三方系统使用,就可以调用此接口实现告警消息推送,会同步推送给WGCLOUD已配置的告警方式(......
  • Python中requests模块(爬虫)基本使用
    Python的requests模块是一个非常流行的HTTP库,用于发送HTTP/1.1请求。一、模块导入1、requests模块的下载:使用包管理器下载,在cmd窗口,或者在项目的虚拟环境目录下:pip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simplerequests2、文件内导入requests包:importrequest......
  • IT监控管理工具 WGCLOUD - 使用公共告警消息推送接口
    WGCLOUD的公共告警接口用于外部业务系统调用的告警接口,需要升级到v3.4.5或以上版本只要调用这个接口,就可以将消息同步推送到我们的告警平台,比如邮件,钉钉,企业微信等此接口主要给有告警需求的第三方系统使用,就可以调用此接口实现告警消息推送,会同步推送给WGCLOUD已配置的告警......