statuslogger found example error xml console log4j2 appender fileappender

found - Archivo de configuración XML log4j2 muy simple utilizando el apilador de consola y archivo



log4j2.properties example (3)

Aquí está mi log4j2.xml simplista que se imprime en la consola y escribe en un archivo rodante diario:

// java private static final Logger logger = LogManager.getLogger(MyClass.class); // log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties> <Property name="logPath">target/cucumber-logs</Property> </Properties> <Appenders> <Console name="console" target="SYSTEM_OUT"> <PatternLayout pattern="[%-5level] %d{HH:mm:ss.SSS} %logger{36}.%M() - %msg%n" /> </Console> <RollingFile name="rollingFile" fileName="${logPath}/cucumber-log.log" filePattern="${logPath}/cucumber-log_%d{yyyy-MM-dd}.log"> <PatternLayout pattern="[%-5level] %d{HH:mm:ss.SSS} %logger{36}.%M() - %msg%n" /> <Policies> <OnStartupTriggeringPolicy /> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="TRACE" additivity="false"> <AppenderRef ref="console" /> <AppenderRef ref="rollingFile" /> </Root> </Loggers> </Configuration>

Se creará un nuevo archivo de registro para cada día con el día anterior renombrado automáticamente a:

cucumber-log_yyyy-MM-dd.log

En un proyecto de Maven, pondría log4j2.xml en src/main/resources O src/test/resources .

Me gustaría un archivo de configuración XML muy simple con una consola y un appender de archivos usando log4j2.

(El sitio web de Apache me está matando con mucha información).


log4j2 tiene un sistema de configuración muy flexible (que en mi humilde opinión es más una distracción que una ayuda), incluso puede usar JSON. Consulte https://logging.apache.org/log4j/2.x/manual/configuration.html para obtener una referencia.

Personalmente, recientemente comencé a usar log4j2, pero estoy tendiendo a la configuración de "XML estricto" (es decir, utilizando atributos en lugar de nombres de elementos), que se puede validar por esquema.

Aquí está mi ejemplo simple usando autoconfiguración y modo estricto, usando una "Propiedad" para configurar el nombre de archivo:

<?xml version="1.0" encoding="UTF-8"?> <Configuration monitorinterval="30" status="info" strict="true"> <Properties> <Property name="filename">log/CelsiusConverter.log</Property> </Properties> <Appenders> <Appender type="Console" name="Console"> <Layout type="PatternLayout" pattern="%d %p [%t] %m%n" /> </Appender> <Appender type="Console" name="FLOW"> <Layout type="PatternLayout" pattern="%C{1}.%M %m %ex%n" /> </Appender> <Appender type="File" name="File" fileName="${filename}"> <Layout type="PatternLayout" pattern="%d %p %C{1.} [%t] %m%n" /> </Appender> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="File" /> <AppenderRef ref="Console" /> <!-- Use FLOW to trace down exact method sending the msg --> <!-- <AppenderRef ref="FLOW" /> --> </Root> </Loggers> </Configuration>


<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> <File name="MyFile" fileName="all.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="Console" /> <AppenderRef ref="MyFile"/> </Root> </Loggers> </Configuration>

Notas:

  • Coloque el siguiente contenido en su archivo de configuración.
  • Nombre el archivo de configuración log4j2.xml
  • Coloque log4j2.xml en una carpeta que se encuentre en la ruta de clase (es decir, su carpeta de origen "src")
  • Utilice Logger logger = LogManager.getLogger(); para inicializar su registrador
  • Establecí el Fill inmediato = "falso" ya que esto es mejor para la duración de SSD . Si necesita el registro de inmediato en su archivo de registro, elimine el parámetro o configúrelo en verdadero