Java Service Wrapper和log4j

时间:2011-05-13 14:30:12

标签: java service wrapper

我正在使用Java Service Wrapper从Java程序创建Windows服务。

一切正常,但包装器不会记录到文件(我正在使用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

2 个答案:

答案 0 :(得分:1)

可能的原因是您忘记在包装器配置中设置-Dlog4j.configuration={path to file}。例如:

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

答案 1 :(得分:0)

我不清楚这个问题。确认。当您作为服务运行时,正确定向到控制台的log4j输出会写入Wrapper的日志文件吗? ../logs/wrapper.log正确吗?

所以问题是应该转到myproject.log.txt的log4j输出没有显示出来。这是你遇到的问题吗?

如果是这样,那么它实际上是一个log4j方面的问题,因为它完全在JVM中。

从您的配置中,您尝试写入。¥myproject.log.txt,它与Wrapper二进制文件位于同一目录中。如果它是文件的访问问题,那么我希望控制台中出现某种log4j错误,然后在wrapper.log文件中可以看到。

要将log4j文件放入Wrapper的日志文件中,您需要执行以下操作: log4j.appender.R.File = ../ logs / myproject.log.txt

请确认您无法写入哪个文件。你还在运行什么版本的Wrapper和Windows?

干杯, 雷夫