Tôi muốn một tệp cấu hình XML rất đơn giản với bảng điều khiển và trình nối thêm tệp bằng log4j2.
(Trang web Apache đang giết tôi với nhiều thông tin.)
Tôi muốn một tệp cấu hình XML rất đơn giản với bảng điều khiển và trình nối thêm tệp bằng log4j2.
(Trang web Apache đang giết tôi với nhiều thông tin.)
Câu trả lời:
<?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>
Ghi chú:
Logger logger = LogManager.getLogger();
để khởi tạo logger của bạnDưới đây là cách đơn giản của tôi log4j2.xml
là in ra bàn điều khiển và ghi vào tệp cuộn hàng ngày:
// 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>
TimeBasingTriggeringPolicy
khoảng (số nguyên) - Tần suất tái xuất hiện thường xuyên dựa trên đơn vị thời gian cụ thể nhất trong mẫu ngày. Ví dụ: với mẫu ngày có giờ là mặt hàng cụ thể nhất và việc tăng 4 vòng quay sẽ xảy ra cứ sau 4 giờ. Giá trị mặc định là 1.
điều chế (boolean) - Cho biết liệu khoảng thời gian có nên được điều chỉnh để khiến cuộn qua tiếp theo xảy ra trên ranh giới khoảng hay không. Ví dụ: nếu mục là giờ, giờ hiện tại là 3 giờ sáng và khoảng thời gian là 4 thì lần tái đầu tiên sẽ xảy ra vào lúc 4 giờ sáng và sau đó lần tiếp theo sẽ xảy ra vào lúc 8 giờ sáng, trưa, 4 giờ chiều, v.v.
Nguồn: https://logging.apache.org/log4j/2.x/manual/appender.html
Đầu ra:
[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
Một tệp nhật ký mới sẽ được tạo hàng ngày với ngày trước đó tự động được đổi tên thành:
cucumber_yyyy-MM-dd.log
Trong một dự án Maven, bạn sẽ đặt các log4j2.xml
trong src/main/resources
hoặc src/test/resources
.
log4j2 có một hệ thống cấu hình rất linh hoạt (mà IMHO gây mất tập trung hơn là trợ giúp), thậm chí bạn có thể sử dụng JSON. Xem https://logging.apache.org/log4j/2.x/manual/configuration.html để tham khảo.
Cá nhân, gần đây tôi mới bắt đầu sử dụng log4j2, nhưng tôi đang có xu hướng cấu hình "XML nghiêm ngặt" (nghĩa là sử dụng các thuộc tính thay vì tên thành phần), có thể được xác thực bằng lược đồ.
Dưới đây là ví dụ đơn giản của tôi bằng cách sử dụng cấu hình tự động và chế độ nghiêm ngặt, sử dụng "Thuộc tính" để đặt tên tệp:
<?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
chính sách ở đây? Kích thước tập tin tối đa là gì? Và làm thế nào để nó ghi vào tập tin? (tệp có luôn chứa 10mb nhật ký cuối cùng không?)