log4j2 异步打印日志 保存不到数据库里面
之前能打印日志并且输出到数据库的 我改成全局异步处理。
发现只是输出到控制台,数据库并没有保存,这是为什么呢?
这是log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- 优先级从高到低分别是 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL -->
<!-- 单词解释: Match:匹配 DENY:拒绝 Mismatch:不匹配 ACCEPT:接受 -->
<!-- DENY,日志将立即被抛弃不再经过其他过滤器; NEUTRAL,有序列表里的下个过滤器过接着处理日志; ACCEPT,日志会被立即处理,不再经过剩余过滤器。 -->
<!--输出日志的格式
%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间
%p : 日志输出格式
%c : logger的名称
%m : 日志内容,即 logger.info("message")
%n : 换行符
%C : Java类名
%L : 日志输出所在行数
%M : 日志输出所在方法名
hostName : 本地机器名
hostAddress : 本地ip地址 -->
<!--这个输出控制台的配置,这里输出除了warn和error级别的信息到System.out -->
<Console name="console_out_appender" target="SYSTEM_OUT">
<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) . -->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出日志的格式 -->
<PatternLayout pattern="%5p [%t] %d{yyyy-MM-dd HH:mm:ss} (%F:%L) %m%n"/>
</Console>
<!-- 这个输出控制台的配置,这里输出error级别的信息到System.err,在eclipse控制台上看到的是红色文字 -->
<Console name="console_err_appender" target="SYSTEM_ERR">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%5p [%t] %d{yyyy-MM-dd HH:mm:ss} (%F:%L) %m%n"/>
</Console>
<JDBC name="databaseAppender" tableName="UNITIME_LOG">
<ConnectionFactory class="com.unicorn.resourceapi.factory.LogConnectionFactory"
method="getDatabaseConnection"/>
<Column name="UNIQUEID" literal="UNITIME_LOG_S.NEXTVAL"/>
<Column name="TS" isEventTimestamp="true"/>
<Column name="LOG_LEVEL" pattern="%level"/>
<Column name="TEXT" pattern="%message"/>
<Column name="USER_ID" pattern="%X{UserId}"/>
<Column name="USER_NAME" pattern="%X{UserName}"/>
<Column name="NM_SPACE" pattern="%X{NameSpace}"/>
<Column name="AGENT" pattern="%X{Agent}"/>
<Column name="REMOTE_HOST" pattern="%X{RemoteHost}"/>
</JDBC>
</Appenders>
<Loggers>
<Root level="INFO" includeLocation="true">
<AppenderRef ref="console_out_appender"/>
<AppenderRef ref="console_err_appender"/>
</Root>
</Loggers>
</Configuration>
我是在执行打印日志前设置了 这个属性 但是好像没有用 System.setProperty("log4j2.contextSelector","org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
这是依赖:
<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-log4j2</artifactId>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简单说就配错了…