logback、log4j2 sql日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 <!--输出到控制台--> <appender name= "CONSOLE" class = "ch.qos.logback.core.ConsoleAppender" > <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> <filter class = "ch.qos.logback.classic.filter.ThresholdFilter" > <level>debug</level> </filter> <!--展示格式 layout--> <layout class = "ch.qos.logback.classic.PatternLayout" > <pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{15} %line - %machine{${machine:-0}} %X{taskName:-0} - %msg%n</pattern> </pattern> </layout> </appender> <!-- 输出到滚动文件 --> <appender name= "preposition" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <Append> true </Append> <!-- 本地日志文件名称和路径 --> <File>${logDir}/preposition/import.log</File> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{15} %line - %machine{${machine:-0}} %X{taskName:-0} - %msg%n</pattern> </encoder> <rollingPolicy class = "ch.qos.logback.core.rolling.FixedWindowRollingPolicy" > <!-- 本地最多保存几份滚动文件 --> <maxIndex>5</maxIndex> <FileNamePattern>${logDir}/preposition/preposition.log.%i</FileNamePattern> </rollingPolicy> <triggeringPolicy class = "ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy" > <!-- 滚动文件的大小 --> <MaxFileSize>300MB</MaxFileSize> </triggeringPolicy> </appender> <!--root节点是对所有appender的管理,添加哪个appender就会打印哪个appender的日志--> <!--root节点的level是总的日志级别控制,如果appender的日志级别设定比root的高,会按照appender的日志级别打印日志,--> <!--如果appender的日志级别比root的低,会按照root设定的日志级别进行打印日志--> <!--也就是说root设定的日志级别是最低限制,如果root设定级别为最高ERROR,那么所有appender只能打印最高级别的日志--> <root level= "INFO" > <appender- ref ref = "CONSOLE" /> <appender- ref ref = "preposition" /> <appender- ref ref = "ASYNC" /> </root> |
1 2 3 4 5 6 7 8 | public static void main(String[] args) { /** * 禁用nutz日志输出,如果需要可以取消下面的注释。 */ Logs.setAdapter(NOP_ADAPTER); SpringApplication.run(XXXxx. class , args); } |
自定义变量%machine
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | public static void main(String[] args) { PatternLayout.DEFAULT_CONVERTER_MAP.put( "machine" , MachineConverter. class .getName()); SpringApplication.run(XmhApplication. class , args); } public class MachineConverter extends ClassicConverter { public static final String KEY_MACHINE = "myMachine" ; public static final String DEFAULT_MACHINE = "0" ; private static final Map<String, String> CACHE = new ConcurrentHashMap(); public String convert(ILoggingEvent event ) { String machine = CACHE. get (KEY_MACHINE); if (machine == null ) { CACHE.put(KEY_MACHINE, "231" ); String machine2 = CACHE. get (KEY_MACHINE); return machine2 == null ? DEFAULT_MACHINE : machine2; } return machine; } <?xml version= "1.0" encoding= "UTF-8" ?> <configuration scan= "true" scanPeriod= "60 seconds" debug= "false" > <contextName>manage</contextName> <!--设置变量--> <springProperty name= "applicationName" scope= "context" source= "spring.application.name" /> <property name= "log.colorPattern" value= "%magenta(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %yellow(%thread) %green(%logger)-****%machine**-[%c]-[%F:%L] %msg%n" /> <property name= "log.pattern" value= "%d{yyyy-MM-dd HH:mm:ss} %-5level %thread %logger-[%c]-[%F:%L] %msg%n" /> <!--输出到控制台--> <appender name= "console" class = "ch.qos.logback.core.ConsoleAppender" > <encoder> <pattern>${log.colorPattern}</pattern> </encoder> </appender> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{15} %line - %machine{${machine:-0}} %X{taskName:-0} - %msg%n</pattern> </encoder> %X表示提取MDC中的值 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 如果设置级别为INFO,则优先级大于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出 log4j2.xml <?xml version= "1.0" encoding= "UTF-8" ?> <Configuration> <appenders> <Console name= "console" target= "SYSTEM_OUT " > <PatternLayout pattern= "%d{yyy MMM dd HH:mm:ss,SSS}: %p %t %c- %m%n" ></PatternLayout> </Console> <RollingFile name= "test" fileName= "../logs/test.log" filePattern= "../logs/test.log.%d{yyyyMMdd}.log" > <PatternLayout> <Pattern>%d{yyy MMM dd HH:mm:ss,SSS}: %p %t %c{ 1 }- %m%n</Pattern> </PatternLayout> <ThresholdFilter level= "INFO" onMatch= "ACCEPT" onMismath= "DENY" /> <!-- 没隔一段时间产生一个新的日志 --> <Policies> <TimeBasedTriggeringPolicy modulate= "true" interval= "1" /> </Policies> </RollingFile> </appenders> <Loggers> <logger name= "cn.com" level= "INFO" > <appender-ref ref= "test" /> </logger> <root level= "INFO" > <appender-ref ref= "console" /> </root> </Loggers> </Configuration> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version> 2.13 . 0 </version> </dependency> <!--log4j到log4j2的连接包--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j- 1.2 -api</artifactId> <version> 2.13 . 0 </version> </dependency> <!--非必须--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version> 2.13 . 0 </version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version> 2.13 . 0 </version> </dependency> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | mybatis sql日志打印 logging.level.cn.com.xxx.dao=debug -- 数据库mybatis的sql日志需要设置为debug Springboot 默认使用的是logback ,所以一定要在 pom 文件中 移除 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version> 1.3 . 0 </version> <exclusions><!-- 去掉默认配置 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions><!-- 去掉默认配置 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> logging.level.cn.com.dao= @mytabis .logging.level@ 实现不同环境的不同级别设置 <profiles> <profile> <id>dev</id> <properties> <env>dev</env> <mytabis.logging.level>debug</mytabis.logging.level> </properties> </profile> <profile> <id>test</id> <properties> <env>test</env> <mytabis.logging.level>info</mytabis.logging.level> </properties> </profile> </profiles> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | log4j.xml 如果使用debug模式,都要改为debug <logger name= "cn.com" level= "debug" > <appender-ref ref= "test" /> </logger> <root level= "debug" > <appender-ref ref= "console" /> </root> @Slf4j public class XmhController { public String hello() { log.info(); Logger logger = LogManager.getLogger(SampleController. class ); Logger logger = LogManager.getLogger(); public String hello() { logger.info(); |
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.12.RELEASE</version>
</parent>
log4j-api等相关包里,要删除报错信息提示的class
分类:
设计模式&架构
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决