2014-03-01 84 views
3

我使用slf4j進行日誌記錄,Glassfish作爲應用服務器。 我logback.xmlSLF4J寫入文件,但不寫入日食控制檯

<configuration debug="true" scan="true"> 
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>C:\glassfish4\glassfish\logs\log.log</file> 
    <encoder> 
     <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{52} - %msg%n</Pattern> 
    </encoder> 
</appender> 
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
    <Pattern>%msg%n</Pattern> 
    </encoder> 
</appender> 
<logger level="DEBUG" name="ru.vmakarenko"/> 
<root> 
    <level value="INFO"/> 
    <appender-ref ref="FILE"/> 
    <appender-ref ref="STDOUT"/> 
</root> 
</configuration> 

我logging.properties

javax.enterprise.system.tools.admin.level=INFO 
handlers=org.slf4j.bridge.SLF4JBridgeHandler 
java.util.logging.ConsoleHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter 
javax.enterprise.system.ssl.security.level=INFO 
org.apache.jasper.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.flushFrequency=1 
org.eclipse.persistence.session.level=INFO 
javax.enterprise.system.tools.backup.level=INFO 
javax.enterprise.resource.corba.level=INFO 
javax.enterprise.resource.webcontainer.jsf.resource.level=INFO 
javax.enterprise.system.core.classloading.level=INFO 
javax.enterprise.resource.jta.level=INFO 
java.util.logging.ConsoleHandler.level=FINEST 
com.sun.enterprise.server.logging.GFFileHandler.file=${com.sun.aas.instanceRoot}/logs/server.log 
javax.enterprise.system.webservices.saaj.level=INFO 
javax.enterprise.system.tools.deployment.level=INFO 
javax.enterprise.system.container.ejb.level=INFO 
org.glassfish.naming.level=INFO 
javax.enterprise.system.core.transaction.level=INFO 
org.apache.catalina.level=INFO 
javax.enterprise.resource.webcontainer.jsf.lifecycle.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0 
javax.enterprise.resource.webcontainer.jsf.config.level=INFO 
javax.enterprise.system.container.ejb.mdb.level=INFO 
javax.enterprise.resource.webcontainer.jsf.timing.level=INFO 
javax.enterprise.system.core.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange=false 
com.sun.enterprise.server.logging.GFFileHandler.excludeFields= 
org.apache.coyote.level=INFO 
ShoalLogger.level=CONFIG 
javax.level=INFO 
javax.enterprise.resource.webcontainer.jsf.taglib.level=INFO 
java.util.logging.FileHandler.limit=50000 
javax.enterprise.system.webservices.rpc.level=INFO 
javax.enterprise.resource.javamail.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.logtoConsole=true 
javax.enterprise.system.container.web.level=INFO 
javax.enterprise.resource.webcontainer.jsf.facelets.level=INFO 
javax.enterprise.system.util.level=INFO 
javax.enterprise.resource.resourceadapter.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.level=ALL 
javax.org.glassfish.persistence.level=INFO 
javax.enterprise.resource.webcontainer.jsf.context.level=INFO 
javax.enterprise.resource.webcontainer.jsf.application.level=INFO 
javax.enterprise.resource.jms.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=true 
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=2000000 
javax.enterprise.system.core.config.level=INFO 
org.jvnet.hk2.osgiadapter.level=INFO 
javax.enterprise.system.level=INFO 
javax.enterprise.system.core.security.level=INFO 
javax.enterprise.system.container.cmp.level=INFO 
java.util.logging.FileHandler.pattern=%h/java%u.log 
com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging=false 
javax.enterprise.resource.sqltrace.level=FINE 
javax.enterprise.resource.webcontainer.jsf.renderkit.level=INFO 
handlerServices=com.sun.enterprise.server.logging.GFFileHandler 
javax.enterprise.system.webservices.registry.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.alarms=false 
javax.enterprise.system.core.selfmanagement.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter 
.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=0 
log4j.logger.org.hibernate.validator.util.Version=warn 
java.util.logging.FileHandler.count=1 
javax.enterprise.resource.webcontainer.jsf.managedbean.level=INFO 
org.glassfish.admingui.level=INFO 
javax.enterprise.resource.jdo.level=INFO 
com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours=0 

而且domain.xml中(JVM選項)

<jvm-options>-Djava.util.logging.config.file=file:///${com.sun.aas.instanceRoot}/config/logging.properties</jvm-options> 
<jvm-options>-Dlogback.configurationFile=file:///${com.sun.aas.instanceRoot}/config/logback.xml</jvm-options> 

,所以我得到了C:\ glassfish4 \ GlassFish的\ logs \ log.log文件與我需要的所有記錄的東西。 但是我在Eclipse Console上什麼都沒有。我安裝了Glassfish工具,並且服務器是通過eclipse進行管理的。我的錯誤是什麼,如何將輸出重定向到文件和控制檯?

此外,當我運行Maven,我得到

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 

也許這是問題的一部分?

回答

-1

如果您正在使用log4j的,然後宣佈SLF4J log4j的在你的pom.xml文件裝訂過:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.5.6</version> 
</dependency> 

,或者如果你沒有使用log4j的,然後請確保您有以下所有的依賴到你的POM。 xml文件:

 <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.6</version> 
     </dependency> 


    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-core</artifactId> 
     <version>1.0.7</version> 
    </dependency> 

    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.0.7</version> 
    </dependency> 
+0

問題是,如何配置logback而不是log4j! –

+0

請檢查答案,上面的依賴關係僅適用於logback。它不適用於log4j。 – Waheed

+0

是的,嗯,這就是我說的:) –

1

似乎是在Eclipse的GlassFish工具插件控制檯處理錯誤,請檢查this線程和this相關的bug報告。

我有一個類似的問題 - 我無法讓JUL日誌記錄正常工作。如果我將應用程序類的日誌記錄級別設置爲低於CONFIG的任何值,則不會將任何內容記錄到Eclipse控制檯,但它也會記錄到server.log。此外,如果我在Eclipse之外啓動GlassFish服務器,則確實會在終端上打印我所有的FINE級別消息。

UPDATE: 我終於可以通過使用薄的封裝程序,例如要求Logger.logp(Level.FINE, null, null, msg)使下面CONFIG工作級別的日誌條目。 GlassFish工具顯然無法處理由com.sun.enterprise.server.logging.ODLLogFormatter產生的FINE級別和更低級別的格式,其中包括額外的CLASSNAME和METHODNAME字段,因此明確將源設置爲null就行了。