2016-05-19 2 views
1

Я пытаюсь использовать log4j2 в первый раз. Я скопировал некоторые примеры конфигурации с разных сайтов, и ни один из них не может генерировать вывод в файлы журнала. Выход на STDOUT/консоль работает нормально.log4j2 Выход не записан в файл журнала

Я могу видеть из вывода консоли, что файл log4j2.xml был найден.

Любые идеи о том, как заставить его записывать в файл журнала.

Я использую Java 8 и log4j 2.5 на Windows, 7.

Java исходный код

package log4j2Demo; 

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

public class LogDemo { 
private static final Logger logger = LogManager.getLogger(LogDemo.class.getName()); 

    public static void main(String[] args) { 
     logger.debug("Hello world - debug log"); 
     logger.info("Hello world - info log"); 
     logger.warn("Hello world - warn log"); 
     logger.error("Hello world - error log"); 
    } 
} 

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="debug"> 
    <Properties> 
     <Property name="log-path">logs</Property> 
    </Properties> 
    <Appenders> 
     <RollingFile name="file-log" fileName="${log-path}/log4j2demo-info.log" 
filePattern="${log-path}/log4j2demo-info-%d{yyyy-MM-dd}.log"> 
      <PatternLayout> 
       <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      </Policies> 
     </RollingFile> 
     <Console name="console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <Logger name="a.demo.of.log4j2" level="info" additivity="false"> 
      <appender-ref ref="file-log" level="info"/> 
     </Logger> 
     <Root level="info" additivity="false"> 
      <appender-ref ref="console"/> 
     </Root> 
    </Loggers> 
</Configuration> 

консольного вывода

2016-05-20 00:31:46,345 main DEBUG Initializing configuration XmlConfiguration[location=C:\demo\log4j2Demo\bin\log4j2.xml] 
2016-05-20 00:31:46,350 main DEBUG Installed script engines 
2016-05-20 00:31:46,705 main DEBUG Oracle Nashorn Version: 1.8.0_91, Language: ECMAScript, Threading: Not Thread Safe, Compile: true, Names: {nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript} 
2016-05-20 00:31:46,706 main DEBUG PluginManager 'Core' found 97 plugins 
2016-05-20 00:31:46,706 main DEBUG PluginManager 'Level' found 0 plugins 
2016-05-20 00:31:46,710 main DEBUG No scheduled items 
2016-05-20 00:31:46,711 main DEBUG Building Plugin[name=property, class=org.apache.logging.log4j.core.config.Property]. 
2016-05-20 00:31:46,723 main DEBUG PluginManager 'TypeConverter' found 23 plugins 
2016-05-20 00:31:46,731 main DEBUG createProperty(name="log-path", value="logs") 
2016-05-20 00:31:46,731 main DEBUG Building Plugin[name=properties, class=org.apache.logging.log4j.core.config.PropertiesPlugin]. 
2016-05-20 00:31:46,737 main DEBUG configureSubstitutor(={log-path=logs}, Configuration(C:\demo\log4j2Demo\bin\log4j2.xml)) 
2016-05-20 00:31:46,737 main DEBUG PluginManager 'Lookup' found 13 plugins 
2016-05-20 00:31:46,738 main DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout]. 
2016-05-20 00:31:46,745 main DEBUG PatternLayout$Builder(pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n", PatternSelector=null, Configuration(C:\demo\log4j2Demo\bin\log4j2.xml), Replace=null, charset="null", alwaysWriteExceptions="null", noConsoleNoAnsi="null", header="null", footer="null") 
2016-05-20 00:31:46,745 main DEBUG PluginManager 'Converter' found 38 plugins 
2016-05-20 00:31:46,759 main DEBUG Building Plugin[name=TimeBasedTriggeringPolicy, class=org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy]. 
2016-05-20 00:31:46,761 main DEBUG createPolicy(interval="1", modulate="true") 
2016-05-20 00:31:46,762 main DEBUG Building Plugin[name=Policies, class=org.apache.logging.log4j.core.appender.rolling.CompositeTriggeringPolicy]. 
2016-05-20 00:31:46,762 main DEBUG createPolicy(={TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true)}) 
2016-05-20 00:31:46,763 main DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.RollingFileAppender]. 
2016-05-20 00:31:46,764 main DEBUG createAppender(fileName="logs/log4j2demo-info.log", filePattern="logs/log4j2demo-info-%d{yyyy-MM-dd}.log", append="null", name="file-log", bufferedIO="null", bufferSize="null", immediateFlush="null", Policies(CompositeTriggeringPolicy(policies=[TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true)])), Strategy=null, PatternLayout([%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n), Filter=null, ignoreExceptions="null", advertise="null", advertiseURI="null", Configuration(C:\demo\log4j2Demo\bin\log4j2.xml)) 
2016-05-20 00:31:46,774 main DEBUG Starting RollingFileManager logs/log4j2demo-info.log 
2016-05-20 00:31:46,776 main DEBUG PluginManager 'FileConverter' found 2 plugins 
2016-05-20 00:31:46,778 main DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout]. 
2016-05-20 00:31:46,780 main DEBUG PatternLayout$Builder(pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n", PatternSelector=null, Configuration(C:\demo\log4j2Demo\bin\log4j2.xml), Replace=null, charset="null", alwaysWriteExceptions="null", noConsoleNoAnsi="null", header="null", footer="null") 
2016-05-20 00:31:46,784 main DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.ConsoleAppender]. 
2016-05-20 00:31:46,785 main DEBUG Not in a ServletContext environment, thus not loading WebLookup plugin. 
2016-05-20 00:31:46,786 main DEBUG PluginManager 'Converter' found 38 plugins 
2016-05-20 00:31:46,788 main DEBUG Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream 
2016-05-20 00:31:46,789 main DEBUG Starting OutputStreamManager SYSTEM_OUT.false-2 
2016-05-20 00:31:46,799 main DEBUG ConsoleAppender$Builder(PatternLayout([%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n), Filter=null, target="SYSTEM_OUT", name="console", follow="null", ignoreExceptions="null") 
2016-05-20 00:31:46,800 main DEBUG Jansi is not installed, cannot find org.fusesource.jansi.WindowsAnsiOutputStream 
2016-05-20 00:31:46,800 main DEBUG Starting OutputStreamManager SYSTEM_OUT.false 
2016-05-20 00:31:46,800 main DEBUG Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin]. 
2016-05-20 00:31:46,801 main DEBUG createAppenders(={file-log, console}) 
2016-05-20 00:31:46,801 main DEBUG Building Plugin[name=appender-ref, class=org.apache.logging.log4j.core.config.AppenderRef]. 
2016-05-20 00:31:46,802 main DEBUG createAppenderRef(ref="file-log", level="INFO", Filter=null) 
2016-05-20 00:31:46,802 main DEBUG Building Plugin[name=logger, class=org.apache.logging.log4j.core.config.LoggerConfig]. 
2016-05-20 00:31:46,806 main DEBUG createLogger(additivity="false", level="INFO", name="a.demo.of.log4j2", includeLocation="null", ={file-log}, ={}, Configuration(C:\demo\log4j2Demo\bin\log4j2.xml), Filter=null) 
2016-05-20 00:31:46,808 main DEBUG Building Plugin[name=appender-ref, class=org.apache.logging.log4j.core.config.AppenderRef]. 
2016-05-20 00:31:46,809 main DEBUG createAppenderRef(ref="console", level="null", Filter=null) 
2016-05-20 00:31:46,809 main DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. 
2016-05-20 00:31:46,810 main DEBUG createLogger(additivity="false", level="INFO", includeLocation="null", ={console}, ={}, Configuration(C:\demo\log4j2Demo\bin\log4j2.xml), Filter=null) 
2016-05-20 00:31:46,810 main DEBUG Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. 
2016-05-20 00:31:46,811 main DEBUG createLoggers(={a.demo.of.log4j2, root}) 
2016-05-20 00:31:46,812 main DEBUG Configuration XmlConfiguration[location=C:\demo\log4j2Demo\bin\log4j2.xml] initialized 
2016-05-20 00:31:46,812 main DEBUG Starting configuration XmlConfiguration[location=C:\demo\log4j2Demo\bin\log4j2.xml] 
2016-05-20 00:31:46,813 main DEBUG Started configuration XmlConfiguration[location=C:\demo\log4j2Demo\bin\log4j2.xml] OK. 
2016-05-20 00:31:46,813 main DEBUG Shutting down OutputStreamManager SYSTEM_OUT.false-1 
2016-05-20 00:31:46,813 main DEBUG Stopped [email protected]af OK 
2016-05-20 00:31:46,860 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93 
2016-05-20 00:31:46,862 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=StatusLogger 
2016-05-20 00:31:46,864 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=ContextSelector 
2016-05-20 00:31:46,865 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Loggers,name= 
2016-05-20 00:31:46,866 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Loggers,name=a.demo.of.log4j2 
2016-05-20 00:31:46,867 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Appenders,name=console 
2016-05-20 00:31:46,868 main DEBUG Registering MBean org.apache.logging.log4j2:type=73d16e93,component=Appenders,name=file-log 
2016-05-20 00:31:46,870 main DEBUG Reconfiguration complete for context[name=73d16e93] at URI C:\demo\log4j2Demo\bin\log4j2.xml ([email protected]) with optional ClassLoader: null 
2016-05-20 00:31:46,871 main DEBUG Shutdown hook enabled. Registering a new one. 
2016-05-20 00:31:46,872 main DEBUG LoggerContext[name=73d16e93, [email protected]] started OK. 
[INFO ] 2016-05-20 00:31:46.878 [main] LogDemo - Hello world - info log 
[WARN ] 2016-05-20 00:31:46.879 [main] LogDemo - Hello world - warn log 
[ERROR] 2016-05-20 00:31:46.879 [main] LogDemo - Hello world - error log 
2016-05-20 00:31:46,880 pool-1-thread-1 DEBUG Stopping LoggerContext[name=73d16e93, [email protected]] 
2016-05-20 00:31:46,880 pool-1-thread-1 DEBUG Stopping LoggerContext[name=73d16e93, [email protected]]... 
2016-05-20 00:31:46,882 pool-1-thread-1 DEBUG Shutting down RollingFileManager logs/log4j2demo-info.log 
2016-05-20 00:31:46,882 pool-1-thread-1 DEBUG Shutting down OutputStreamManager SYSTEM_OUT.false 
2016-05-20 00:31:46,882 pool-1-thread-1 DEBUG Stopped XmlConfiguration[location=C:\demo\log4j2Demo\bin\log4j2.xml] OK 
2016-05-20 00:31:46,882 pool-1-thread-1 DEBUG Stopped LoggerContext[name=73d16e93, [email protected]]... 

каталог Windows, список показывает созданный файл, но пустой

C:\demo\log4j2Demo\logs>dir 
Volume in drive C is dfsdf0694 
Volume Serial Number is asdffd 

Directory of C:\demo\log4j2Demo\logs 

20/05/2016 12:45 AM <DIR>   . 
20/05/2016 12:45 AM <DIR>   .. 
20/05/2016 12:31 AM     0 log4j2demo-info.log 
       1 File(s)    0 bytes 
       2 Dir(s) 263,832,457,216 bytes free 
+0

Попробуйте указать абсолютный путь к файлу вместо относительного. – Berger

ответ

1

Он не пишет в файл, поскольку Logger вы используете для входа называется log4j2Demo.LogDemo, но регистратор вы настроили это названный «a.demo.of.log4j2». Поскольку имена не совпадают, он будет использовать корневой журнал, который вы настроили для входа в консоль.

+0

Вот исправленный фрагмент: \t \t <имя Logger = "log4j2Demo.LogDemo" уровень = "Информация" аддитивность = "ложь"> \t \t \t \t \t – MattG