Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
log4j今天没有登录,两天前工作正常_Log4j - Fatal编程技术网

log4j今天没有登录,两天前工作正常

log4j今天没有登录,两天前工作正常,log4j,Log4j,这个问题已经被问了很多次,但我无法从过去回答的问题中找出问题的症结所在 我的log4j日志在12月31日运行良好。今天,1月2日,我上班的第一天,没有任何记录。应记录的数据显示在控制台上,但未显示在日志文件中。我的log4j.properties如下。从上次日志记录工作到今天,其中没有任何更改 我的应用程序是基于servlet的,我在catalina或localhost日志中都没有看到错误 我不知道会发生什么事。有人有什么想法吗 我刚刚意识到,在今天开始之前,我对该项目进行了SVN更新。我可能得

这个问题已经被问了很多次,但我无法从过去回答的问题中找出问题的症结所在

我的log4j日志在12月31日运行良好。今天,1月2日,我上班的第一天,没有任何记录。应记录的数据显示在控制台上,但未显示在日志文件中。我的log4j.properties如下。从上次日志记录工作到今天,其中没有任何更改

我的应用程序是基于servlet的,我在catalina或localhost日志中都没有看到错误

我不知道会发生什么事。有人有什么想法吗

我刚刚意识到,在今天开始之前,我对该项目进行了SVN更新。我可能得到了某个jar文件的更新版本。jar“冲突”会导致log4j停止日志记录吗

log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n


log4j.logger.AppLogFile=DEBUG,AppLogFile
log4j.appender.AppLogFile.File=../logs/dbconnect.log
log4j.appender.AppLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.AppLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.AppLogFile.layout.ConversionPattern=DBCONNECT %-22d{dd/MMM/yyyy HH:mm:ss} - %m%n


# manage logging for packages
log4j.category.org.springframework=ERROR
log4j.category.org.hibernate=ERROR
log4j.category.com.mchange.v2=ERROR

我在这里回答我自己的问题。经过四个小时的搜索,我找到了答案

问题是当我进行更新时,第三方jar从SubVersion下载下来。这个jar是昨天由一个开发人员在应用程序的不同部分添加的

Log4j在查找“Log4j.properties”之前先查找“Log4j.xml”。第三方jar包含一个log4j.xml,因此加载了一个,而忽略了我的log4j.properties。 一旦我添加了log4j调试命令,这就很容易找到了

因此,如果你发现自己处于这种情况下,下面是如何做到这一点

阻止雄猫

在%CATALINA_HOME%/bin中创建一个名为setenv.bat的文件。将以下行添加到文件中:

REM Use this file to set either or both JAVA_OPTS, CATALINA_OPTS
REM Don't change startup.bat
set JAVA_OPTS=-Dlog4j.debug
保存并重新启动Tomcat

Log4j现在将有用的信息记录到控制台,包括它使用的配置文件

当Tomcat启动应用程序Log4j时,记录对配置文件的搜索。这里有两个摘录;第一个展示了发生在我身上的事情,第二个展示了我的正常行为

案例1:Log4j找对了位置,/WEB-APPS/emscribe/WEB-INF/classes,但Log4j.xml不是Log4j.properties

log4j: Trying to find [log4j.xml] using context classloader WebappClassLoader
  context: /emscribe
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader: org.apache.catalina.loader.StandardClassLoader@1f7fd168
log4j: Using URL [jar:file:/C:/Program%20Files/Apache%20Software%20Foundation/apache-tomcat-7.0.26/webapps/emscribe/WEB-INF/lib/dynamicreports-examples-3.0.0.jar!/log4j.xml] for automatic log4j configuration.
因此,Log4j在最近添加的第三方jar中找到了Log4j.xml,不再进一步查找

案例2:移除第三方jar后,log4j找到了正确的配置文件:

log4j: Trying to find [log4j.xml] using context classloader WebappClassLoader
  context: /emscribe
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:org.apache.catalina.loader.StandardClassLoader@8b10bd5

log4j: Trying to find [log4j.xml] using WebappClassLoader
  context: /emscribe
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:org.apache.catalina.loader.StandardClassLoader@8b10bd5class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader WebappClassLoader
  context: /emscribe
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@8b10bd5
.
log4j: Using URL [file:/C:/Program%20Files/Apache%20Software%20Foundation/apache-tomcat-7.0.26/webapps/emscribe/WEB-INF/classes/log4j.properties] for automaticlog4j configuration.
log4j: Reading configuration from URL file:/C:/Program%20Files/Apache%20Software%20Foundation/apache-tomcat-7.0.26/webapps/emscribe/WEB-INF/classes/log4j.properties
我最终用一个等价的log4j.xml替换了log4j.properties,替换了第三方jar,在jar中的log4j.xml之前找到了我的log4j.xml