这里主要演示springboot中log4j2的使用。
1、新建样例工程
1.1 新建工程
File->New->Project...
选择新建Maven项目:
点击下一步,然后输入Maven坐标:
image.png
设置存放目录信息:
image.png
点击Finish
。工程创建完毕:
1.2 编写简单代码
修改pom文件配置依赖,修改后的pom.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.space.log4j2</groupId>
<artifactId>trial</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- 排除自带的日志依赖 -->
<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>
</dependency>
<!-- 引入log4j2依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
</project>
新建java类com.space.log4j2.trial.Application
:
package com.space.log4j2.trial;
import org.apache.logging.log4j.LogManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Created by chengxia on 2021/12/7.
*/
@SpringBootApplication
public class Application {
private static final org.apache.logging.log4j.Logger log = LogManager.getLogger(Application.class);
public static void main(String[] args) {
//日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
log.trace("This is a trace level log");
log.debug("This is a debug level log");
log.info("This is a info level log");
log.warn("This is a warn level log");
log.error("This is a error level log");
log.fatal("This is a fatal level log");
SpringApplication.run(Application.class, args);
}
}
新建log4j2的日志配置文件log4j2.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<!-- 定义一个日志格式的属性,后面可以引用 -->
<Property name="LOG_PATTERN">
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} - [%t]%c : %m%n
</Property>
</Properties>
<Appenders>
<!-- 引用前面的日志格式,将日志输出到控制台 -->
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true" >
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
</Appenders>
<Loggers>
<!-- 设置默认的日志输出级别 -->
<Root level="info">
<AppenderRef ref="ConsoleAppender" />
</Root>
</Loggers>
</Configuration>
注意,这里的日志配置文件名log4j2.xml
不能修改,修改后各种奇怪的现象。
到这里,编码和配置就完成了,最后结构如下:
启动运行,日志输出如下:
com.space.log4j2.trial.Application
2022-01-11 23:18:01.779 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a info level log
2022-01-11 23:18:01.783 WARN ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a warn level log
2022-01-11 23:18:01.784 ERROR ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a error level log
2022-01-11 23:18:01.784 FATAL ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a fatal level log
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.4.RELEASE)
2022-01-11 23:18:02.567 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Starting Application on ChengdeMBP with PID 1029 (/Users/chengxia/Developer/Java/JavaWeb/trial/target/classes started by chengxia in /Users/chengxia/Developer/Java/JavaWeb/trial)
2022-01-11 23:18:02.569 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : No active profile set, falling back to default profiles: default
2022-01-11 23:18:02.802 INFO ChengdeMBP - [main]org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@710f4dc7: startup date [Tue Jan 11 23:18:02 CST 2022]; root of context hierarchy
2022-01-11 23:18:05.047 INFO ChengdeMBP - [main]org.springframework.boot.web.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-01-11 23:18:05.085 INFO ChengdeMBP - [main]org.apache.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8080"]
2022-01-11 23:18:05.102 INFO ChengdeMBP - [main]org.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-01-11 23:18:05.106 INFO ChengdeMBP - [main]org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.32
2022-01-11 23:18:05.145 INFO ChengdeMBP - [localhost-startStop-1]org.apache.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/chengxia/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2022-01-11 23:18:05.368 INFO ChengdeMBP - [localhost-startStop-1]org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-01-11 23:18:05.368 INFO ChengdeMBP - [localhost-startStop-1]org.springframework.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2578 ms
2022-01-11 23:18:05.464 INFO ChengdeMBP - [localhost-startStop-1]org.springframework.boot.web.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2022-01-11 23:18:05.470 INFO ChengdeMBP - [localhost-startStop-1]org.springframework.boot.web.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2022-01-11 23:18:05.470 INFO ChengdeMBP - [localhost-startStop-1]org.springframework.boot.web.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2022-01-11 23:18:05.471 INFO ChengdeMBP - [localhost-startStop-1]org.springframework.boot.web.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2022-01-11 23:18:05.471 INFO ChengdeMBP - [localhost-startStop-1]org.springframework.boot.web.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2022-01-11 23:18:05.696 INFO ChengdeMBP - [main]org.springframework.web.servlet.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2022-01-11 23:18:05.995 INFO ChengdeMBP - [main]org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@710f4dc7: startup date [Tue Jan 11 23:18:02 CST 2022]; root of context hierarchy
2022-01-11 23:18:06.181 INFO ChengdeMBP - [main]org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2022-01-11 23:18:06.183 INFO ChengdeMBP - [main]org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2022-01-11 23:18:06.221 INFO ChengdeMBP - [main]org.springframework.web.servlet.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2022-01-11 23:18:06.221 INFO ChengdeMBP - [main]org.springframework.web.servlet.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2022-01-11 23:18:06.408 INFO ChengdeMBP - [main]org.springframework.jmx.export.annotation.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2022-01-11 23:18:06.426 INFO ChengdeMBP - [main]org.apache.coyote.http11.Http11NioProtocol : Starting ProtocolHandler ["http-nio-8080"]
2022-01-11 23:18:06.483 INFO ChengdeMBP - [main]org.apache.tomcat.util.net.NioSelectorPool : Using a shared selector for servlet write/read
2022-01-11 23:18:06.525 INFO ChengdeMBP - [main]org.springframework.boot.web.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2022-01-11 23:18:06.530 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Started Application in 4.584 seconds (JVM running for 6.135)
2、修改日志配置
2.1 修改指定类的日志输出级别
前面的例子中,可以看到好多org.springframework
中类输出的info日志,可以单独将这些类的日志级别配置为warn。修改log4j2.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<!-- 定义一个日志格式的属性,后面可以引用 -->
<Property name="LOG_PATTERN">
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} - [%t]%c : %m%n
</Property>
</Properties>
<Appenders>
<!-- 引用前面的日志格式,将日志输出到控制台 -->
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true" >
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
</Appenders>
<Loggers>
<!-- 设置org.springframework包的日志输出级别为warn -->
<Logger name="org.springframework" level="warn" additivity="false">
<AppenderRef ref="ConsoleAppender"/>
</Logger>
<!-- 设置默认的日志输出级别 -->
<Root level="info">
<AppenderRef ref="ConsoleAppender" />
</Root>
</Loggers>
</Configuration>
修改后,启动运行,日志输出如下:
2022-01-11 23:27:03.932 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a info level log
2022-01-11 23:27:03.939 WARN ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a warn level log
2022-01-11 23:27:03.939 ERROR ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a error level log
2022-01-11 23:27:03.939 FATAL ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a fatal level log
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.4.RELEASE)
2022-01-11 23:27:04.798 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Starting Application on ChengdeMBP with PID 1077 (/Users/chengxia/Developer/Java/JavaWeb/trial/target/classes started by chengxia in /Users/chengxia/Developer/Java/JavaWeb/trial)
2022-01-11 23:27:04.799 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : No active profile set, falling back to default profiles: default
2022-01-11 23:27:07.728 INFO ChengdeMBP - [main]org.apache.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8080"]
2022-01-11 23:27:07.751 INFO ChengdeMBP - [main]org.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-01-11 23:27:07.751 INFO ChengdeMBP - [main]org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.32
2022-01-11 23:27:07.768 INFO ChengdeMBP - [localhost-startStop-1]org.apache.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/chengxia/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2022-01-11 23:27:07.922 INFO ChengdeMBP - [localhost-startStop-1]org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-01-11 23:27:09.331 INFO ChengdeMBP - [main]org.apache.coyote.http11.Http11NioProtocol : Starting ProtocolHandler ["http-nio-8080"]
2022-01-11 23:27:09.360 INFO ChengdeMBP - [main]org.apache.tomcat.util.net.NioSelectorPool : Using a shared selector for servlet write/read
2022-01-11 23:27:09.407 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Started Application in 5.313 seconds (JVM running for 6.798)
2.2 将日志输出到文件
修改配置文件log4j2.xml
,将某些类的日志输出到文件。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<!-- 定义一个日志格式的属性,后面可以引用 -->
<Property name="LOG_PATTERN">
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} - [%t]%c : %m%n
</Property>
<!-- 定义日志存储的路径,不要配置相对路径 -->
<property name="FILE_PATH" value="/Users/chengxia/Developer/Java/logs" />
<property name="FILE_NAME" value="TestTest" />
</Properties>
<Appenders>
<!-- 引用前面的日志格式,将日志输出到控制台 -->
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true" >
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<!--
这个会打印出所有的info及以下级别的信息,每次大小超过size,
则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档
-->
<RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖 -->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
</Appenders>
<Loggers>
<!-- 设置org.springframework包的日志输出级别为warn -->
<Logger name="org.springframework" level="warn" additivity="false">
<AppenderRef ref="ConsoleAppender"/>
</Logger>
<!-- com.space包的日志输出级别为warn,输出到文件。additivity为"true"表示输出到文件的同时也输出到root logger -->
<Logger name="com.space" level="info" additivity="true">
<AppenderRef ref="RollingFileInfo"/>
<AppenderRef ref="RollingFileWarn"/>
<AppenderRef ref="RollingFileError"/>
</Logger>
<!-- 设置默认的日志输出级别 -->
<Root level="info">
<AppenderRef ref="ConsoleAppender" />
</Root>
</Loggers>
</Configuration>
启动运行之后,控制台日志输出如下:
2022-01-11 23:40:31.672 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a info level log
2022-01-11 23:40:31.682 WARN ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a warn level log
2022-01-11 23:40:31.683 ERROR ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a error level log
2022-01-11 23:40:31.683 FATAL ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a fatal level log
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.4.RELEASE)
2022-01-11 23:40:32.834 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Starting Application on ChengdeMBP with PID 1194 (/Users/chengxia/Developer/Java/JavaWeb/trial/target/classes started by chengxia in /Users/chengxia/Developer/Java/JavaWeb/trial)
2022-01-11 23:40:32.836 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : No active profile set, falling back to default profiles: default
2022-01-11 23:40:35.117 INFO ChengdeMBP - [main]org.apache.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8080"]
2022-01-11 23:40:35.130 INFO ChengdeMBP - [main]org.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-01-11 23:40:35.130 INFO ChengdeMBP - [main]org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.32
2022-01-11 23:40:35.142 INFO ChengdeMBP - [localhost-startStop-1]org.apache.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/chengxia/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2022-01-11 23:40:35.262 INFO ChengdeMBP - [localhost-startStop-1]org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-01-11 23:40:36.451 INFO ChengdeMBP - [main]org.apache.coyote.http11.Http11NioProtocol : Starting ProtocolHandler ["http-nio-8080"]
2022-01-11 23:40:36.478 INFO ChengdeMBP - [main]org.apache.tomcat.util.net.NioSelectorPool : Using a shared selector for servlet write/read
2022-01-11 23:40:36.505 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Started Application in 4.58 seconds (JVM running for 6.18)
再看下文件中,也有对应的日志输出:
ChengdeMBP:logs chengxia$ pwd
/Users/chengxia/Developer/Java/logs
ChengdeMBP:logs chengxia$ ls
error.log info.log warn.log
ChengdeMBP:logs chengxia$ cat info.log
2022-01-11 23:40:31.672 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a info level log
2022-01-11 23:40:31.682 WARN ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a warn level log
2022-01-11 23:40:31.683 ERROR ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a error level log
2022-01-11 23:40:31.683 FATAL ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a fatal level log
2022-01-11 23:40:32.834 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Starting Application on ChengdeMBP with PID 1194 (/Users/chengxia/Developer/Java/JavaWeb/trial/target/classes started by chengxia in /Users/chengxia/Developer/Java/JavaWeb/trial)
2022-01-11 23:40:32.836 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : No active profile set, falling back to default profiles: default
2022-01-11 23:40:36.505 INFO ChengdeMBP - [main]com.space.log4j2.trial.Application : Started Application in 4.58 seconds (JVM running for 6.18)
ChengdeMBP:logs chengxia$ cat warn.log
2022-01-11 23:40:31.682 WARN ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a warn level log
2022-01-11 23:40:31.683 ERROR ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a error level log
2022-01-11 23:40:31.683 FATAL ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a fatal level log
ChengdeMBP:logs chengxia$ cat error.log
2022-01-11 23:40:31.683 ERROR ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a error level log
2022-01-11 23:40:31.683 FATAL ChengdeMBP - [main]com.space.log4j2.trial.Application : This is a fatal level log
ChengdeMBP:logs chengxia$
3、log4j日志格式配置
如下参考:
%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:输出自应用程序启动到输出该log信息耗费的毫秒数。
%t:输出产生该日志事件的线程名。
%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:输出日志信息所属的类目,通常就是所在类的全名。
%M:输出产生日志信息的方法名。
%F:输出日志消息产生时所在的文件名称。
%L::输出代码中的行号。
%m::输出代码中指定的具体日志信息。
%n:输出一个回车换行符,Windows平台为”rn”,Unix平台为”n”。
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%:输出一个”%”字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
1) c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
2)%-20c:”-“号表示左对齐。
3)%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
网友评论