我正在使用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
答案 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?
干杯, 雷夫