2012-01-16 112 views
0

我已经使用Log4j配置了一个项目。我使用log4.properties文件配置了log4j。 测试运行时会创建myLog.log文件,但没有任何内容写入日志文件。 Appender我们使用RollingFileAppenderlog4j.rootLogger=DEBUG日志消息没有写入日志文件

任何人都可以提出什么可能会导致此问题?

这里是项目的log4j.properties。

log4j.rootLogger= DEBUG, ConsoleAppender, Rolling 
log4j.appender.ConsoleAppender=org.apache.log4j.ConsoleAppender 
log4j.appender.ConsoleAppender.layout=org.apache.log4j.PatternLayout 

log4j.appender.ConsoleAppender.layout.ConversionPattern=%d %-2p %c.%M(): %m%n 
log4j.appender.Rolling=org.apache.log4j.RollingFileAppender 
log4j.appender.Rolling.MaxFileSize=5MB 
log4j.appender.Rolling.MaxBackupIndex=2 
log4j.appender.Rolling.File=D:\Logs\myProj.log 
log4j.appender.Rolling.layout = org.apache.log4j.PatternLayout 
log4j.appender.Rolling.layout.ConversionPattern=%d %-4p %c.%M(): %m%n 
## Following two lines have been removed now. 
log4j.logger.com=WARN 
log4j.logger.org=WARN 

在日志文件中接收到的记录:

所有的
2012-01-16 22:02:08,534 DEBUG org.apache.http.headers.receiveResponseHeader(): << content-type: application/json; charset=UTF-8 
2012-01-16 22:02:08,534 DEBUG org.apache.http.headers.receiveResponseHeader(): << connection: close 
2012-01-16 22:02:08,534 DEBUG org.apache.http.headers.receiveResponseHeader(): << content-length: 236 
2012-01-16 22:02:08,550 DEBUG org.apache.http.headers.receiveResponseHeader(): << server: httpd.js 
2012-01-16 22:02:08,550 DEBUG org.apache.http.headers.receiveResponseHeader(): << date: Tue, 17 Jan 2012 03:02:06 GMT 
2012-01-16 22:02:08,566 DEBUG org.apache.http.wire.wire(): << "{"name":"clickElement","sessionId":"2fad55cf-670e-44f3-ab60-7d2f76f641e6","status":0,"value":"This action is final and cannot be undone?"}" 
2012-01-16 22:02:08,566 DEBUG org.apache.http.impl.conn.DefaultClientConnection.shutdown(): Connection shut down 
2012-01-16 22:02:08,566 DEBUG org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.releaseConnection(): Released connection is not reusable. 
2012-01-16 22:02:08,566 DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute.freeEntry(): Releasing connection [HttpRoute[{}->http://127.0.0.1:7055]][null] 
2012-01-16 22:02:08,566 DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute.notifyWaitingThread(): Notifying no-one, there are no waiting threads 
2012-01-16 22:02:10,566 DEBUG org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.getConnection(): Get connection: HttpRoute[{}->http://127.0.0.1:7055], timeout = 120000 
2012-01-16 22:02:10,566 DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(): [HttpRoute[{}->http://127.0.0.1:7055]] total kept alive: 0, total issued: 0, total allocated: 0 out of 2000 
2012-01-16 22:02:10,566 DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getFreeEntry(): No free connections [HttpRoute[{}->http://127.0.0.1:7055]][null] 
2012-01-16 22:02:10,566 DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(): Available capacity: 2000 out of 2000 [HttpRoute[{}->http://127.0.0.1:7055]][null] 
2012-01-16 22:02:10,581 DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute.createEntry(): Creating new connection [HttpRoute[{}->http://127.0.0.1:7055]] 
2012-01-16 22:02:10,597 DEBUG org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(): Connecting to 127.0.0.1:7055 
2012-01-16 22:02:10,597 DEBUG org.apache.http.client.protocol.RequestAddCookies.process(): CookieSpec selected: best-match 
2012-01-16 22:02:10,597 DEBUG org.apache.http.client.protocol.RequestAuthCache.process(): Auth cache not set in the context 
2012-01-16 22:02:10,597 DEBUG org.apache.http.impl.client.DefaultHttpClient.tryExecute(): Attempt 1 to execute request 
2012-01-16 22:02:10,597 DEBUG org.apache.http.impl.conn.DefaultClientConnection.sendRequestHeader(): Sending request: GET /hub/session/2fad55cf-670e-44f3-ab60-7d2f76f641e6/alert_text HTTP/1.1 
2012-01-16 22:02:10,597 DEBUG org.apache.http.wire.wire(): >> "GET /hub/session/2fad55cf-670e-44f3-ab60-7d2f76f641e6/alert_text HTTP/1.1[\r][\n]" 
2012-01-16 22:02:10,597 DEBUG org.apache.http.wire.wire(): >> "Accept: application/json, image/png[\r][\n]" 
2012-01-16 22:02:10,597 DEBUG org.apache.http.wire.wire(): >> "Host: 127.0.0.1:7055[\r][\n]" 
2012-01-16 22:02:10,597 DEBUG org.apache.http.wire.wire(): >> "Connection: Keep-Alive[\r][\n]" 
2012-01-16 22:02:10,597 DEBUG org.apache.http.wire.wire(): >> "[\r][\n]" 
2012-01-16 22:02:10,597 DEBUG org.apache.http.headers.sendRequestHeader(): >> GET /hub/session/2fad55cf-670e-44f3-ab60-7d2f76f641e6/alert_text HTTP/1.1 
2012-01-16 22:02:10,597 DEBUG org.apache.http.headers.sendRequestHeader(): >> Accept: application/json, image/png 
2012-01-16 22:02:10,597 DEBUG org.apache.http.headers.sendRequestHeader(): >> Host: 127.0.0.1:7055 
2012-01-16 22:02:10,597 DEBUG org.apache.http.headers.sendRequestHeader(): >> Connection: Keep-Alive 
2012-01-16 22:02:10,612 DEBUG org.apache.http.wire.wire(): << "HTTP/1.1 200 OK[\r][\n]" 
2012-01-16 22:02:10,612 DEBUG org.apache.http.wire.wire(): << "content-type: application/json; charset=UTF-8[\r][\n]" 
2012-01-16 22:02:10,612 DEBUG org.apache.http.wire.wire(): << "connection: close[\r][\n]" 
2012-01-16 22:02:10,612 DEBUG org.apache.http.wire.wire(): << "content-length: 236[\r][\n]" 
2012-01-16 22:02:10,612 DEBUG org.apache.http.wire.wire(): << "server: httpd.js[\r][\n]" 
2012-01-16 22:02:10,612 DEBUG org.apache.http.wire.wire(): << "date: Tue, 17 Jan 2012 03:02:10 GMT[\r][\n]" 
2012-01-16 22:02:10,612 DEBUG org.apache.http.wire.wire(): << "[\r][\n]" 
2012-01-16 22:02:10,612 DEBUG org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(): Receiving response: HTTP/1.1 200 OK 
+4

显示的全部内容你'log4j.properties' – adarshr

+0

显示你的log4j.properties –

+0

哪里属性文件和你的Java日志记录代码? – kgiannakakis

回答

1

或者更详细:没有来自com或org-packages的日志级别为< WARN的日志记录请求将被启用。所以它不会被转发到你的rootLogger。

引用:

与记录器(或者分配或继承,取其 适当)电平Q水平p的日志请求时,如果p> = Q启用。

对于给定的记录器每个启用日志记录请求将被转发到所有在 该记录器以及层次更高的附加目的地的追加程序。

参见:http://logging.apache.org/log4j/1.2/manual.html

+0

谢谢它的帮助。但是当我看到日志时,没有任何语句来自我的java类。所有的日志语句都与其他软件包相关。我粘贴了一些日志的问题。之后,我添加了log4j.logger.org.apache.http =错误。现在我在日志中没有看到任何东西。我不知道为什么我的java类中没有一行会记录日志文件。 – PriWeb

+0

@PriWeb - 什么是您使用记录器的类的完全限定名?粘贴如何创建记录器以及您在日志语句中使用的日志级别。 – quaylar

+0

另外:您可以在运行配置中添加“-Dlog4j.debug =”true“”,以查看Log4J如何配置自身(在类路径中是否可能存在其他log4j.properties?) – quaylar

2

首先,确保你的log4j.properties装入类路径。如果它是一个web应用程序,我认为该文件也可以在WEB-INF/classes目录中找到。但是因为你说这个文件正在创建,我认为这不是问题。

那么,试着用这个

log4j.rootLogger= DEBUG, Console, Rolling 
log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 

log4j.appender.Console.layout.ConversionPattern=%d %-2p %c.%M(): %m%n 
log4j.appender.Rolling=org.apache.log4j.RollingFileAppender 
log4j.appender.Rolling.MaxFileSize=5MB 
log4j.appender.Rolling.MaxBackupIndex=2 
log4j.appender.Rolling.File=D:\Logs\myProj.log 
log4j.appender.Rolling.layout = org.apache.log4j.PatternLayout 
log4j.appender.Rolling.layout.ConversionPattern=%d %-4p %c.%M(): %m%n 

请注意,我已经删除了最后两行。

基本上,这些线路设置日志级别WARN到开始comorg所有软件包。因此,除非您有任何WARN消息被记录,否则在日志文件上根本看不到任何东西。

你可以做这样的事情

log4j.logger.com.foo.bar=DEBUG 
log4j.logger.com.foo.bar.MyClass=TRACE 

与试验水平上面会打印记录所有com.foo.bar日志中DEBUG,而将在TRACE级打印com.foo.bar.MyClass日志。

+1

谢谢。这很有帮助。但是当我看到日志时,没有任何语句来自我的java类。所有的日志语句都与其他软件包相关。我正在粘贴问题中的一些日志。 – PriWeb

+0

@PriWeb不禁要问,你有没有在你的课堂上记录任何东西? – adarshr