2011-05-13 71 views
1

我正在使用Java服務包裝器從Java程序創建Windows服務。Java服務包裝器和log4j

一切工作正常,除包裝不記錄到文件(我使用log4j)。當項目不作爲服務運行時,日誌工作正常。

這不是Log4J問題,因爲我可以成功登錄到控制檯(這會重定向到包裝器的日誌文件),但不是我試圖實現的。

這裏是我的包裝的配置文件:

encoding=UTF-8 
    #include ../conf/wrapper-license.conf 
    wrapper.lang.folder=../lang 
    # Java Configuration. 
    wrapper.java.command=java 
    wrapper.java.command.loglevel=INFO 
    wrapper.logfile.rollmode=NONE 
    wrapper.java.mainclass=servicewrapper.MainServiceWrapper 
    wrapper.java.classpath.1=../lib/*.jar 
    wrapper.java.classpath.2=../lib/classes/*.jar 
    wrapper.java.library.path.1=../lib 
    wrapper.java.additional.auto_bits=TRUE 
    wrapper.app.parameter.1=servicewrapper.MainServiceWrapper 
    # Logging Configuration 
    wrapper.console.format=PM 
    wrapper.logfile=../logs/wrapper.log 
    # Service Configuration 
    wrapper.name=myproject 
    wrapper.check.deadlock=TRUE 
    wrapper.check.deadlock.interval=10 
    wrapper.check.deadlock.action=RESTART 
    wrapper.check.deadlock.output=FULL 
    wrapper.console.title=myproject 
    wrapper.ntservice.dependency.1= 
    wrapper.ntservice.starttype=AUTO_START 
    wrapper.ntservice.interactive=false 

而且,這裏是我的Log4J的配置文件:

log4j.rootCategory=INFO, R 

log4j.logger.com.dappit.Dapper.parser=ERROR 
log4j.logger.org.w3c.tidy=FATAL 
log4j.logger.org.hibernate=ERROR 
log4j.logger.org.hibernate.type=ERROR 
log4j.logger.com.mchange.v2.c3p0=ERROR 
log4j.logger.myproject=DEBUG 

#------------------------------------------------------------------------------ 
# 
# The following properties configure the console (stdout) appender. 
# See http://logging.apache.org/log4j/docs/api/index.html for details. 
# 
#------------------------------------------------------------------------------ 
log4j.appender.S = org.apache.log4j.ConsoleAppender 
log4j.appender.S.layout = org.apache.log4j.PatternLayout 
log4j.appender.S.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c{1} %m%n 

#------------------------------------------------------------------------------ 
# 
# The following properties configure the Daily Rolling File appender. 
# See http://logging.apache.org/log4j/docs/api/index.html for details. 
# 
#------------------------------------------------------------------------------ 
log4j.appender.R = org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.File = myproject.log.txt 
log4j.appender.R.Append = true 
log4j.appender.R.layout = org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c{1} %m%n 

回答

0

我是不是對這個問題不清楚。確認。當您作爲服務運行時,正確地將指向控制檯的log4j輸出寫入Wrapper的日誌文件? ../logs/wrapper.log正確嗎?

所以問題是你的log4j輸出應該去myproject.log.txt沒有顯示出來。這是你遇到的問題嗎?

如果是這樣,那麼它實際上是一個log4j方面的問題,因爲這完全在JVM中。

從您的配置中嘗試寫入。¥myproject.log.txt,它將與Wrapper二進制文件位於同一目錄中。如果這是對文件的訪問問題,那麼我會期望在控制檯中出現某種log4j錯誤,然後在wrapper.log文件中可以看到該錯誤。

爲了把log4j的文件與包裝的日誌文件,你會想做的事: log4j.appender.R.File = ../logs/myproject.log.txt

請確認哪個文件你無法寫入。你還在使用什麼版本的Wrapper和Windows?

乾杯, 雷夫

1

一個可能的原因是,你忘了設置-Dlog4j.configuration={path to file}在您的包裝配置。例如:

wrapper.java.additional.1=-Dlog4j.configuration=/home/logs.log