Java 将c3po日志转发到Logback的文件中
c3po日志通常由控制台打印。我试图将C3PO日志转发到一个文件中,但没有成功 这是我的logback.xml和pom.xml LOGBACKJava 将c3po日志转发到Logback的文件中,java,spring,logback,Java,Spring,Logback,c3po日志通常由控制台打印。我试图将C3PO日志转发到一个文件中,但没有成功 这是我的logback.xml和pom.xml LOGBACK <?xml version="1.0" encoding="UTF-8" ?> <configuration scanPeriod="10 seconds" debug="false" scan="true"> <property name="LOG_DIR" value="logs" /> <a
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scanPeriod="10 seconds" debug="false" scan="true">
<property name="LOG_DIR" value="logs" />
<appender name="STDOUTAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date %level [%X{traceid}] - %C{1}:%L %msg%n</pattern>
</encoder>
</appender>
<appender name="SPRING"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/spring.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/spring.log.%d{yyyy-MM-dd-HH}
</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%date %level [%X{traceid}] - %C{1}:%L %msg%n</pattern>
</encoder>
</appender>
<appender name="errorAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/error/ERROR.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/error/ERROR.log.%d{yyyy-MM-dd-HH}
</FileNamePattern>
<MaxHistory>72</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="AppAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/application/APPLICATION.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/application/APPLICATION.log.%d{yyyy-MM-dd-HH}
</FileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level [%X{traceid}] - %C{1}:%L %msg%n</pattern>
</encoder>
</appender>
<appender name="TxnAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/txn/TXN.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/txn/TXN.log.%d{yyyy-MM-dd-HH}
</FileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="AlarmAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/alarm/ALARM.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/alarm/ALARM.log.%d{yyyy-MM-dd}
</FileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="C3POAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/c3po/c3po.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/c3po/c3po.log.%d{yyyy-MM-dd}
</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<logger name="org.springframework">
<level value="INFO" />
<appender-ref ref="SPRING" />
</logger>
<logger name="TxnLogger">
<level value="INFO" />
<appender-ref ref="TxnAppender" />
</logger>
<logger name="AlarmLogger">
<level value="INFO" />
<appender-ref ref="AlarmAppender" />
</logger>
<logger name="com.mchange.v2.c3p0">
<appender-ref ref="C3POAppender" />
</logger>
<logger name="com.ttech.pnsender" additivity="true" level="DEBUG">
<appender-ref ref="AppAppender" />
<appender-ref ref="errorAppender" />
</logger>
<root level="ERROR">
<appender-ref ref="STDOUTAppender" />
</root>
</configuration>
%日期%1级别[%X{traceid}]-%C{1}:%L%msg%n
${LOG\u DIR}/spring.LOG
${LOG\u DIR}/spring.LOG.%d{yyyy-MM-dd-HH}
30
%日期%1级别[%X{traceid}]-%C{1}:%L%msg%n
${LOG\u DIR}/error/error.LOG
${LOG\u DIR}/error/error.LOG.%d{yyyy-MM-dd-HH}
72
%日期%级别[%thread]%msg%n
错误
接受
否认
${LOG\u DIR}/application/application.LOG
${LOG\u DIR}/application/application.LOG.%d{yyyy-MM-dd-HH}
%日期%1级别[%X{traceid}]-%C{1}:%L%msg%n
${LOG_DIR}/txn/txn.LOG
${LOG_DIR}/txn/txn.LOG.%d{yyyy-MM-dd-HH}
%消息%n
${LOG_DIR}/alarm/alarm.LOG
${LOG\u DIR}/alarm/alarm.LOG.%d{yyyy-MM-dd}
%消息%n
${LOG_DIR}/c3po/c3po.LOG
${LOG\u DIR}/c3po/c3po.LOG.%d{yyyy-MM-dd}
30
%消息%n
POM.XML
<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.ahmetk</groupId>
<artifactId>pnsender</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<!-- weblogic üzerine deploy etmek için websocket collision olmasin. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
</exclusions>
</dependency>
4.0.0
com.ahmetk
pnsender
UTF-8
1.8
斯普林尼奥
org.springframework.boot
spring启动程序父级
1.4.2.1发布
org.springframework.boot
springbootmaven插件
朱尼特
朱尼特
测试
redis.clients
绝地武士
org.springframework.boot
弹簧靴
org.springframework.boot
弹簧启动安全
org.springframework.boot
弹簧靴自动配置
org.springframework.boot
SpringBootStarterWeb
org.apache.tomcat.embed
tomcat嵌入websocket
org.apache.tomcat.embed
tomcat嵌入websocket
假如
-->
org.springframework.boot
弹簧启动机tomcat
假如
org.springframework.boot
弹簧靴启动器jdbc
org.springframework.boot
spring引导启动器数据jpa
javax.ws.rs
javax.ws.rs-api
2.0.1
org.springframework
弹簧试验
测试
org.mockito
莫基托所有
1.9.5
测试
com.oracle
ojdbc6
11.2.0.4
com.mchange
c3p0
0.9.2.1
com.googlecode.libphonenumber
libphonenumber
7.2.6
com.google.code.gson
格森
2.4
番石榴
番石榴
19
com.datasax.cassandra
卡桑德拉驱动核心
3.1.0
com.datasax.cassandra
卡桑德拉驱动映射
3.1.0
com.googlecode.json-simple
简单json
1.1.1
com.notnoop.apns
apns
1.0.0.Beta7_2-SNAPSHOT
com.fasterxml.jackson.core
杰克逊数据绑定
com.relayrides
咄咄逼人
0.5-1快照
org.apache.kafka
卡夫卡2.10
0.8.2.1
org.slf4j
slf4j-log4j12
org.apache.kafka
卡夫卡客户
0.8.2.1
org.apache.avro
阿夫罗
1.7.7
org.springframework.boot
弹簧靴起动器执行器
org.jboss.logging
jboss日志
3.3.0.1最终版本
hsqldb
hsqldb
1.8.0.10
测试
我在使用slf4j+logback+c3p0组合时遇到了类似的问题 按照以下步骤找到解决方案:
Java1.4+标准日志记录
,无需执行任何操作。如果不配置FallbackMLog,则自动选择'org.slf4j/jul-to-slf4j
添加到pom.xml(将java util日志连接到slf4j)// Getting JUL root logger
Logger logger = java.util.logging.LogManager.getLogManager().getLogger("");
// Remove already attached Console handler which is responsible for above trouble
for (Handler handler : logger.getHandlers()) {
handler.close();
logger.removeHandler(handler);
}
// Let SLF4J bridge configure its own handler(s)
SLF4JBridgeHandler.install();
${LOG\u DIR}/c3po文件夹有权限限制吗?没有,其他appender工作正常,即使创建了c3po/c3po.LOG文件,也无法将日志转发到该文件中,因为现在我只是暂时禁用了c3p0日志记录com.mchange.v2.LOG.FallbackMLog.DEFAULT\u
// Getting JUL root logger
Logger logger = java.util.logging.LogManager.getLogManager().getLogger("");
// Remove already attached Console handler which is responsible for above trouble
for (Handler handler : logger.getHandlers()) {
handler.close();
logger.removeHandler(handler);
}
// Let SLF4J bridge configure its own handler(s)
SLF4JBridgeHandler.install();