我有一个webapp,我将它两次部署到tomcat服务器上(它有不同的版本,比如说1.0和2.0)。这个webapp配置了一个log4j。log4j的jar文件位于webapp的WEB-INF/lib文件夹中,而记录器的属性文件是从外部配置路径读取的。我希望两个webapps都将信息记录在同一个.log文件中,但实际发生的情况是,只有一个(1.0或2.0)登录到指定的文件中,而另一个则什么也不登录。我有点相信这是因为在webapp初始化过程中log4j是如何初始化的,但我真的不确定如何使1.0和2.0都登录到同一个文件中。有什么想法吗?这是我的属性文件:
log4j.rootLogger=DEBUG, FILE
log4j.additivity.ApplicationLog=false
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %x [%p] [%C{1}.%M] %m%n
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=/external/path/myLogFile.log
log4j.appender.FILE.MaxFileSize=50000KB
log4j.appender.FILE.MaxBackupIndex=10
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %x [%p] [%C{1}.%M] %m%n
LE:使用tomcat 7
LE2:可能是因为RollingFileAppender。第二个应用程序似乎继续写入.log.1文件,而第一个应用程序则写入新的.log文件
为此,Log4j支持一个SocketAppender(https://logging.apache.org/Log4j/1.2/faq.html#a3.3)。您可以将两个版本的应用程序日志记录到SocketAppender,并配置SimpleSocketServer以接收信息并将日志条目写入磁盘。
参见log4j:如何使用SocketAppender?举个例子。
问题内容: 我们有几个同时运行的作业,它们必须为log4j使用相同的配置信息。他们都使用相同的附加程序将日志转储到一个文件中。有没有一种方法可以让每个作业动态命名其日志文件,以使它们保持独立? 谢谢 汤姆 问题答案: 您可以为每个作业传递Java系统属性吗?如果是这样,您可以像这样进行参数化: 然后在您的log4j.properties中: 您可以使用主机环境(例如)中的值填充Java系统属性,该
我想创建单独的日志文件,一个用于信息,另一个用于调试,我正在使用下面的log4j.property文件,请建议如何修改不同文件中的两级日志记录, 我想请求请发送我更新的属性文件而不是给我搜索或探索的指针,因为我已经花了3-4个小时在Google和StackOverflow上搜索这个解决方案, 提前道谢。
问题内容: 我们有一个weblogic批处理应用程序,它可以同时处理来自使用者的多个请求。我们使用log4j记录目的。现在,我们登录到单个日志文件以处理多个请求。调试给定请求的问题变得很麻烦,因为所有请求都将日志记录在一个文件中。 因此,计划是每个请求只有一个日志文件。使用者发送一个请求ID,必须对其进行处理。现在,实际上可能有多个使用者将请求ID发送到我们的应用程序。因此,问题是如何根据请求隔离
问题内容: 我正在开发一个通过Commons使用Log4J的项目。 我正在尝试找到日志文件的路径,但是没有找到合适的方法来从Logger返回日志文件的路径。 有人尝试过吗? 问题答案: 您必须 从根记录器 获取所有附加程序,然后获取日志文件的名称。
大家好,我的社区, 我正在编写一个多线程应用程序,其中需要使用log4j为每个线程输出一个日志文件。理想情况下,我希望为每个线程运行一个单独的日志实例。我正在辩论我应该如何处理这个问题。因为每个日志实例的文件输出位置不同,所以我需要更新每个实例的属性。现在,我正在尝试创建一个新的记录器,将新属性设置到属性对象中,并使用