【问题标题】:Java Service Wrapper and log4jJava 服务包装器和 log4j
【发布时间】:2011-05-13 14:30:11
【问题描述】:

我正在使用 Java 服务包装器从 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

【问题讨论】:

    标签: java service wrapper


    【解决方案1】:

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

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

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

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

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

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

    干杯, 雷夫

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-18
        • 1970-01-01
        • 2014-08-16
        • 1970-01-01
        • 1970-01-01
        • 2013-04-19
        • 2011-09-16
        • 1970-01-01
        相关资源
        最近更新 更多