簡體   English   中英

使用Log4j和slf4j在日志文件中無輸出

[英]No output in log file using Log4j and slf4j

問題我沒有得到任何輸出到Gamebot.log文件,但是我確實在控制台上得到了它,我也不知道為什么它不輸出到日志中。 請幫忙。

編碼
Log4j配置文件

 <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="DEBUG" name="GameBot">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] %logger{36} - %msg%n" />
            </Console>
            <File name="MyFile" fileName="Gamebot.log" immediateFlush="false" append="false">
                <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            </File>
        </Appenders>
        <Loggers>
            <Root level="DEBUG">
                <AppenderRef ref="MyFile" />
            </Root>
            <Root level="INFO">
                <AppenderRef ref="Console" />
            </Root>

            <Logger name="wh1spr.gamebot.MessageHandler" level="Debug" additivity="false">
                <AppenderRef ref="Console" />
            </Logger>


        </Loggers>
    </Configuration>

代碼本身

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MessageHandler {
    final static Logger logger = LoggerFactory.getLogger(MessageHandler.class);

    ...
    @EventSubscriber
    public onMessageReceived(MessageReceivedEvent event) {
        ...
        logger.info("This should show up in both console and Gamebot.log")
        ...
    }
    ...
}

輸出
對於文件,什么都沒有。
對於控制台:正在登錄bot ...

2017-05-30 17:54:54,666 main DEBUG Initializing configuration XmlConfiguration[location=/Users/NAME/Desktop/Workspace/DiscordBot/bin/log4j2.xml]
2017-05-30 17:54:54,675 main DEBUG Installed script engines
2017-05-30 17:54:55,164 main DEBUG Oracle Nashorn Version: 1.8.0_45, Language: ECMAScript, Threading: Not Thread Safe, Compile: true, Names: {nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript}
2017-05-30 17:54:55,164 main DEBUG PluginManager 'Core' found 112 plugins
2017-05-30 17:54:55,165 main DEBUG PluginManager 'Level' found 0 plugins
2017-05-30 17:54:55,170 main DEBUG PluginManager 'Lookup' found 13 plugins
2017-05-30 17:54:55,173 main DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
2017-05-30 17:54:55,188 main DEBUG PluginManager 'TypeConverter' found 26 plugins
2017-05-30 17:54:55,201 main DEBUG PatternLayout$Builder(pattern="%d{HH:mm:ss.SSS} [%-5level] %logger{36} - %msg%n", PatternSelector=null, Configuration(GameBot), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="null", noConsoleNoAnsi="null", header="null", footer="null")
2017-05-30 17:54:55,201 main DEBUG PluginManager 'Converter' found 41 plugins
2017-05-30 17:54:55,202 main DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender].
2017-05-30 17:54:55,210 main DEBUG ConsoleAppender$Builder(target="SYSTEM_OUT", follow="null", direct="null", bufferedIo="null", bufferSize="null", immediateFlush="null", ignoreExceptions="null", PatternLayout(%d{HH:mm:ss.SSS} [%-5level] %logger{36} - %msg%n), name="Console", Configuration(GameBot), Filter=null)
2017-05-30 17:54:55,210 main DEBUG Starting OutputStreamManager SYSTEM_OUT.false.false
2017-05-30 17:54:55,211 main DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
2017-05-30 17:54:55,212 main DEBUG PatternLayout$Builder(pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n", PatternSelector=null, Configuration(GameBot), Replace=null, charset="null", alwaysWriteExceptions="null", disableAnsi="null", noConsoleNoAnsi="null", header="null", footer="null")
2017-05-30 17:54:55,225 main DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.FileAppender].
2017-05-30 17:54:55,230 main DEBUG FileAppender$Builder(fileName="Gamebot.log", append="false", locking="null", advertise="null", advertiseUri="null", createOnDemand="null", bufferedIo="null", bufferSize="null", immediateFlush="false", ignoreExceptions="null", PatternLayout(%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n), name="MyFile", Configuration(GameBot), Filter=null)
2017-05-30 17:54:55,233 main DEBUG Starting FileManager Gamebot.log
2017-05-30 17:54:55,234 main DEBUG Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin].
2017-05-30 17:54:55,235 main DEBUG createAppenders(={Console, MyFile})
2017-05-30 17:54:55,235 main DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
2017-05-30 17:54:55,243 main DEBUG createAppenderRef(ref="MyFile", level="null", Filter=null)
2017-05-30 17:54:55,244 main DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger].
2017-05-30 17:54:55,245 main DEBUG createLogger(additivity="null", level="DEBUG", includeLocation="null", ={MyFile}, ={}, Configuration(GameBot), Filter=null)
2017-05-30 17:54:55,248 main DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
2017-05-30 17:54:55,249 main DEBUG createAppenderRef(ref="Console", level="null", Filter=null)
2017-05-30 17:54:55,249 main DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger].
2017-05-30 17:54:55,250 main DEBUG createLogger(additivity="null", level="INFO", includeLocation="null", ={Console}, ={}, Configuration(GameBot), Filter=null)
2017-05-30 17:54:55,251 main DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef].
2017-05-30 17:54:55,251 main DEBUG createAppenderRef(ref="Console", level="null", Filter=null)
2017-05-30 17:54:55,252 main DEBUG Building Plugin[name=logger, class=org.apache.logging.log4j.core.config.LoggerConfig].
2017-05-30 17:54:55,256 main DEBUG createLogger(additivity="false", level="DEBUG", name="wh1spr.gamebot.MessageHandler", includeLocation="null", ={Console}, ={}, Configuration(GameBot), Filter=null)
2017-05-30 17:54:55,257 main DEBUG Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin].
2017-05-30 17:54:55,258 main DEBUG createLoggers(={root, root, wh1spr.gamebot.MessageHandler})
2017-05-30 17:54:55,259 main DEBUG Configuration XmlConfiguration[location=/Users/NAME/Desktop/Workspace/DiscordBot/bin/log4j2.xml] initialized
2017-05-30 17:54:55,260 main DEBUG Starting configuration XmlConfiguration[location=/Users/NAME/Desktop/Workspace/DiscordBot/bin/log4j2.xml]
2017-05-30 17:54:55,260 main DEBUG Started configuration XmlConfiguration[location=/Users/NAME/Desktop/Workspace/DiscordBot/bin/log4j2.xml] OK.
2017-05-30 17:54:55,263 main DEBUG Shutting down OutputStreamManager SYSTEM_OUT.false.false-1
2017-05-30 17:54:55,263 main DEBUG Shut down OutputStreamManager SYSTEM_OUT.false.false-1, all resources released: true
2017-05-30 17:54:55,263 main DEBUG Appender DefaultConsole-1 stopped with status true
2017-05-30 17:54:55,264 main DEBUG Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@58d25a40 OK
2017-05-30 17:54:55,325 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93
2017-05-30 17:54:55,327 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=StatusLogger
2017-05-30 17:54:55,329 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=ContextSelector
2017-05-30 17:54:55,331 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Loggers,name=
2017-05-30 17:54:55,332 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Loggers,name=wh1spr.gamebot.MessageHandler
2017-05-30 17:54:55,336 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Appenders,name=Console
2017-05-30 17:54:55,337 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Appenders,name=MyFile
2017-05-30 17:54:55,338 main DEBUG Reconfiguration complete for context[name=73d16e93] at URI /Users/NAME/Desktop/Workspace/DiscordBot/bin/log4j2.xml (org.apache.logging.log4j.core.LoggerContext@2cdd0d4b) with optional ClassLoader: null
2017-05-30 17:54:55,339 main DEBUG Shutdown hook enabled. Registering a new one.
2017-05-30 17:54:55,340 main DEBUG LoggerContext[name=73d16e93, org.apache.logging.log4j.core.LoggerContext@2cdd0d4b] started OK.
17:54:55.383 [INFO ] org.eclipse.jetty.util.log - Logging initialized @1179ms to org.eclipse.jetty.util.log.Slf4jLog
17:54:55.389 [INFO ] sx.blah.discord.Discord4J - Discord4J v2.8.1 (60523841852316689438ed3099ad7203f5bd262b-6052384) (https://github.com/austinv11/Discord4J)
17:54:55.389 [INFO ] sx.blah.discord.Discord4J - A Java binding for the official Discord API, forked from the inactive https://github.com/nerd/Discord4J. Copyright (c) 2017, Licensed under GNU LGPLv3
17:54:56.887 [INFO ] sx.blah.discord.Discord4J - Websocket Connected.
17:54:57.107 [INFO ] sx.blah.discord.Discord4J - Connected to Discord Gateway v5. Receiving 1 guilds.
GameBot is ready for action!
17:55:19.565 [DEBUG] wh1spr.gamebot.MessageHandler - Message received! Wh1spr > &&shutdown ==> This is the message that initiates shutdown (saving a few files then calling System.exit(0))
2017-05-30 17:55:19,740 pool-1-thread-1 DEBUG Stopping LoggerContext[name=73d16e93, org.apache.logging.log4j.core.LoggerContext@2cdd0d4b]
2017-05-30 17:55:19,740 pool-1-thread-1 DEBUG Stopping LoggerContext[name=73d16e93, org.apache.logging.log4j.core.LoggerContext@2cdd0d4b]...
2017-05-30 17:55:19,743 pool-1-thread-1 DEBUG Shutting down FileManager Gamebot.log
2017-05-30 17:55:19,744 pool-1-thread-1 DEBUG Shut down FileManager Gamebot.log, all resources released: true ==> It should've written something to the file here, yet it doesn't.
2017-05-30 17:55:19,744 pool-1-thread-1 DEBUG Appender MyFile stopped with status true
2017-05-30 17:55:19,744 pool-1-thread-1 DEBUG Shutting down OutputStreamManager SYSTEM_OUT.false.false
2017-05-30 17:55:19,744 pool-1-thread-1 DEBUG Shut down OutputStreamManager SYSTEM_OUT.false.false, all resources released: true
2017-05-30 17:55:19,745 pool-1-thread-1 DEBUG Appender Console stopped with status true
2017-05-30 17:55:19,745 pool-1-thread-1 DEBUG Stopped XmlConfiguration[location=/Users/NAME/Desktop/Workspace/DiscordBot/bin/log4j2.xml] OK
2017-05-30 17:55:19,745 pool-1-thread-1 DEBUG Stopped LoggerContext[name=73d16e93, org.apache.logging.log4j.core.LoggerContext@2cdd0d4b] with status true

編輯:
導入的庫是

  • log4j的-API-2.8.2.jar
  • log4j的核心 - 2.8.2.jar
  • log4j的-SLF4J-IMPL-2.8.2.jar
  • SLF4J-API 1.7.25.jar

最終的結果比評論要長,因此我將其發布為答案。

  1. 您的File Appender似乎是正確的。
  2. 看來您只能設置一次“ Root level 因此,您實際上要告訴的log4j是這樣的:

    一世。 “將根記錄器的級別設置為調試,並使其使用名為'MyFile'的文件附加器。

    II。 但是,然后您說:“實際上,將根記錄器的級別設置為info,並使該附加器為稱為'Console'的控制台附加器。

  3. 執行以下操作時,您對定義的記錄器的處理方式:

     <Logger name="wh1spr.gamebot.MessageHandler" level="Debug" additivity="false"> <AppenderRef ref="Console" /> </Logger> 

    告訴log4j您要創建一個名為“ wh1spr.gamebot.MessageHandler”的Logger,並將其級別設置為debug,並且希望它使用名為Console'. Now, since you've set the root logger's level to的Appender Console'. Now, since you've set the root logger's level to Console'. Now, since you've set the root logger's level to INFO`,因此當前記錄程序的級別為Debug(優先級更高),因此您僅使用控制台附加程序。

您應該可以擺脫第二個<Root>...</Root>來解決此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM