Log4j2 kullanarak bir konsol ve dosya ekleyicisi ile çok basit bir XML yapılandırma dosyası istiyorum.
(Apache Web sitesi beni çok fazla Bilgi ile öldürüyor.)
Log4j2 kullanarak bir konsol ve dosya ekleyicisi ile çok basit bir XML yapılandırma dosyası istiyorum.
(Apache Web sitesi beni çok fazla Bilgi ile öldürüyor.)
Yanıtlar:
<?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>
Notlar:
Logger logger = LogManager.getLogger();
Kaydedicinizi başlatmak için kullanınİşte benim basite log4j2.xml
baskılar konsola olduğunu ve günlük haddeleme dosyasına yazıyor:
// 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>
<Property name="rollingFileName">cucumber</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%highlight{%-5level}] %d{DEFAULT} %c{1}.%M() - %msg%n%throwable{short.lineNumber}" />
</Console>
<RollingFile name="rollingFile" fileName="${logPath}/${rollingFileName}.log" filePattern="${logPath}/${rollingFileName}_%d{yyyy-MM-dd}.log">
<PatternLayout pattern="[%highlight{%-5level}] %d{DEFAULT} %c{1}.%M() - %msg%n%throwable{short.lineNumber}" />
<Policies>
<!-- Causes a rollover if the log file is older than the current JVM's start time -->
<OnStartupTriggeringPolicy />
<!-- Causes a rollover once the date/time pattern no longer applies to the active file -->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="DEBUG" additivity="false">
<AppenderRef ref="console" />
<AppenderRef ref="rollingFile" />
</Root>
</Loggers>
</Configuration>
TimeBasedTriggeringPolicy
aralığı (tamsayı) - Tarih düzenindeki en spesifik zaman birimine göre bir rollover'ın ne sıklıkta gerçekleşmesi gerektiği. Örneğin, en belirgin öğe olarak saat içeren bir tarih düzeniyle ve her 4 saatte bir 4 rollover artışla gerçekleşir. Varsayılan değer 1'dir.
modulate (boolean) - Aralığın, bir sonraki rollover'ın aralık sınırında gerçekleşmesine neden olacak şekilde ayarlanıp ayarlanmayacağını belirtir. Örneğin, öğe saatse, geçerli saat 3 am ve aralık 4'tür, ilk rollover 4'te gerçekleşir ve daha sonra 8:00, öğlen, 16:00 vb.
Kaynak: https://logging.apache.org/log4j/2.x/manual/appenders.html
Çıktı:
[INFO ] 2018-07-21 12:03:47,412 ScenarioHook.beforeScenario() - Browser=CHROME32_NOHEAD
[INFO ] 2018-07-21 12:03:48,623 ScenarioHook.beforeScenario() - Screen Resolution (WxH)=1366x768
[DEBUG] 2018-07-21 12:03:52,125 HomePageNavigationSteps.I_Am_At_The_Home_Page() - Base URL=http://simplydo.com/projector/
[DEBUG] 2018-07-21 12:03:52,700 NetIncomeProjectorSteps.I_Enter_My_Start_Balance() - Start Balance=348000
Önceki gün otomatik olarak şu şekilde yeniden adlandırılarak günlük olarak yeni bir günlük dosyası oluşturulur:
cucumber_yyyy-MM-dd.log
Bir Maven projede, koyardı log4j2.xml
in src/main/resources
ya src/test/resources
.
log4j2 çok esnek bir yapılandırma sistemine sahiptir (IMHO bir yardımdan daha dikkat dağıtıcıdır), JSON'u bile kullanabilirsiniz. Referans için https://logging.apache.org/log4j/2.x/manual/configuration.html adresine bakın .
Şahsen, kısa bir süre önce log4j2 kullanmaya başladım, ancak şema doğrulaması yapılabilen "katı XML" yapılandırmasına (yani, öğe adları yerine öznitelikleri kullanarak) yöneliyorum.
Dosya adını ayarlamak için "Özellik" kullanarak, otomatik yapılandırma ve katı modu kullanarak basit örneğim:
<?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>
File
Buradaki politika nedir ? Maksimum dosya boyutu nedir? Ve dosyaya nasıl yazıyor? (dosya her zaman günlüklerin son 10 mb'sini içerir mi?)