我有一个干净的Tomcat7安装启用log4j(根据http://tomcat.apache.org/tomcat-7.0-doc/logging.html#Using_Log4j)。 “应用程序级”日志记录使用log4j配置(我将日志定向到本地系统日志服务器)。如何使我的应用程序access.log也使用log4j?据我所见,我可以在AccessLogValve,ExtendedAccessLogValve和JDBCAccessLogValve中进行选择,但更重要的是,它们使我能够登录syslog并使用log4j。Tomcat通过log4j访问日志记录?
3
A
回答
3
log4j-scribe-appender项目包含一个Log4JAccessLogValve,它可以让你做到这一点。
0
,如果你使用的是Tomcat 7,你可以通过扩展覆盖的AccessLogValve此功能:
/**
* Log the specified message to the log file, switching files if the date
* has changed since the previous log call.
*
* @param message Message to be logged
*/
public void log(String message) {
rotate();
/* In case something external rotated the file instead */
if (checkExists) {
synchronized (this) {
if (currentLogFile != null && !currentLogFile.exists()) {
try {
close(false);
} catch (Throwable e) {
ExceptionUtils.handleThrowable(e);
log.info(sm.getString("accessLogValve.closeFail"), e);
}
/* Make sure date is correct */
dateStamp = fileDateFormatter.format(
new Date(System.currentTimeMillis()));
open();
}
}
}
// Log this message
synchronized(this) {
if (writer != null) {
writer.println(message);
if (!buffered) {
writer.flush();
}
}
}
}
0
这适用于JDK日志记录:
package org.apache.plugins;
import java.util.logging.Logger;
import org.apache.catalina.valves.AccessLogValve;
public class AccessLogJdkValve extends AccessLogValve {
private static Logger jdkLogger = Logger.getLogger(AccessLogJdkValve.class.getName());
@Override
public void log(String msg) {
jdkLogger.info(msg);
}
@Override
protected synchronized void open() {
// do nothing
}
}
的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>tomcat7-conf</groupId>
<artifactId>tomcat7-conf</artifactId>
<version>1.0-RELEASE</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>common-tomcat-maven-plugin</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>7.0.12</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
只需编译,制作一个罐子,在/usr/share/tomcat7/lib/
中放置一个副本,并修改server.xml
。我将它添加到我在github上的reference tomcat7 configuration。
相关问题
- 1. Tomcat使用log4j进行日志记录?
- 2. Log4j日志记录阈值
- 3. Flyway&Log4J日志记录
- 4. log4j,外部日志记录
- 5. Java日志记录 - slf4j,log4j
- 6. Apache commons + log4j日志记录
- 7. Log4j的日志记录
- 8. 把log4j日志记录httpclient
- 9. 在扩展日志记录类中访问log4j属性
- 10. 如何通过log4j启用HTTP头的日志记录
- 11. 通过JMX重新启动Log4J日志记录
- 12. Tomcat servlet日志记录
- 13. Azure Java Tomcat日志记录
- 14. 在Apache Tomcat中使用Log4j进行Mule日志记录
- 15. 相对于应用程序路径的Tomcat log4j日志记录?
- 16. Tomcat日志远程访问
- 17. log4j日志记录层级顺序
- 18. Log4j日志记录以分离文件
- 19. Spring JavaConfig和log4j日志记录器
- 20. 分布式日志记录:JMS和log4j?
- 21. 扩展log4j日志记录器
- 22. JBoss 6.0 M3和Log4j日志记录
- 23. log4j构建一致的日志记录
- 24. log4j额外的日志记录参数
- 25. Morphia在log4j上的日志记录
- 26. Log4j的同步日志记录
- 27. Hadoop Yarn任务级log4j日志记录
- 28. Log4j基于类的日志记录
- 29. 小日志与大日志:通过Java日志记录
- 30. 蚂蚁:通过Log4j记录
经过我的测试,log4j-scribe-appender只能用于Tomcat 6.需要用Tomcat 7重写Log4JAccessLogValve。 – Ben