Saya ingin file konfigurasi XML yang sangat sederhana dengan konsol dan file appender menggunakan log4j2.
(Situs web Apache membunuhku dengan banyak informasi.)
Saya ingin file konfigurasi XML yang sangat sederhana dengan konsol dan file appender menggunakan log4j2.
(Situs web Apache membunuhku dengan banyak informasi.)
Jawaban:
<?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>
Catatan:
Logger logger = LogManager.getLogger();
untuk menginisialisasi logger AndaBerikut ini adalah daftar sederhana saya log4j2.xml
yang dicetak untuk menghibur dan menulis ke file bergulir harian:
// 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
interval (integer) - Seberapa sering rollover terjadi berdasarkan unit waktu paling spesifik dalam pola tanggal. Misalnya, dengan pola tanggal dengan jam sebagai item yang paling spesifik dan dan kenaikan 4 rollover akan terjadi setiap 4 jam. Nilai standarnya adalah 1.
modate (boolean) - Menunjukkan apakah interval harus disesuaikan untuk menyebabkan rollover berikutnya terjadi pada batas interval. Misalnya, jika itemnya adalah jam, jam saat ini adalah jam 3 pagi dan intervalnya adalah 4 maka rollover pertama akan terjadi pada jam 4 pagi dan kemudian jam berikutnya akan terjadi pada jam 8 pagi, siang, jam 4 sore, dll.
Sumber: https://logging.apache.org/log4j/2.x/manual/appenders.html
Keluaran:
[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
File log baru akan dibuat setiap hari dengan hari sebelumnya secara otomatis diganti namanya menjadi:
cucumber_yyyy-MM-dd.log
Dalam proyek Maven, Anda akan menempatkan log4j2.xml
di src/main/resources
atau src/test/resources
.
log4j2 memiliki sistem konfigurasi yang sangat fleksibel (yang IMHO lebih merupakan gangguan daripada bantuan), Anda bahkan dapat menggunakan JSON. Lihat https://logging.apache.org/log4j/2.x/manual/configuration.html untuk referensi.
Secara pribadi, saya baru saja mulai menggunakan log4j2, tapi saya cenderung ke arah konfigurasi "XML ketat" (yaitu, menggunakan atribut alih-alih nama elemen), yang dapat divalidasi skema.
Berikut ini adalah contoh sederhana saya menggunakan konfigurasi otomatis dan mode ketat, menggunakan "Properti" untuk mengatur nama file:
<?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
kebijakannya di sini? Berapa ukuran file maks? Dan bagaimana cara menulis ke file? (apakah file selalu berisi 10mb log terakhir?)