Tôi đang sử dụng logback/slf4j để ghi nhật ký của mình. Tôi muốn phân tích tệp nhật ký của mình để phân tích một số dữ liệu, vì vậy thay vì phân tích cú pháp một tệp lớn lớn (chủ yếu bao gồm các câu lệnh gỡ rối), tôi muốn có hai bản ghi nhật ký mà mỗi đăng nhập vào một tệp riêng biệt; một cho phân tích và một cho tất cả các mục đích đăng nhập. Có ai biết nếu điều này là có thể với Logback, hoặc bất kỳ logger khác cho rằng vấn đề?Đăng nhập để ghi các thông điệp khác nhau vào hai tệp
108
A
Trả lời
223
Rất có thể thực hiện điều gì đó như thế này trong quá trình đăng xuất. Dưới đây là một cấu hình ví dụ:
<?xml version="1.0"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logfile.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="ANALYTICS-FILE" class="ch.qos.logback.core.FileAppender">
<file>analytics.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures analytics data only goes to the analytics log -->
<logger name="analytics" level="DEBUG" additivity="false">
<appender-ref ref="ANALYTICS-FILE"/>
</logger>
<root>
<appender-ref ref="FILE"/>
</root>
</configuration>
Sau đó, bạn muốn thiết lập hai logger riêng biệt, một cho tất cả mọi thứ và có để đăng nhập dữ liệu phân tích như sau:
Logger analytics = LoggerFactory.getLogger("analytics");
1
trong trường hợp của tôi, tôi muốn rời khỏi tên lớp như đăng nhập tên
private static final Logger log = LoggerFactory.getLogger(ScheduledPost.class);
và như tôi đã có vài lớp học như vậy, vì vậy tôi logbook.xml
<!--additivity=false ensures this log data only goes to the this log, and no one more -->
<logger name="xxx.xxx.xxx.ScheduledPost" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
<logger name="xxx.xxx.xxx.GcmPost" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
<logger name="xxx.xxx.xxx.PushUtils" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
1
Bạn có thể có bao nhiêu logger như bạn muốn. Tuy nhiên, tốt hơn bạn nên có một gói cho mỗi gói mà bạn cần đăng nhập khác nhau. Sau đó tất cả các lớp trong gói đó và các gói con của nó sẽ nhận được trình ghi cụ thể đó. Tất cả chúng đều có thể chia sẻ logger gốc và gửi dữ liệu nhật ký của chúng tới trình tạo logger gốc bằng cách sử dụng additivity = "true". Dưới đây là một ví dụ:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="pattern" value="%date{HH:mm:ss.SSS} %-5p %logger{36}
%X{akkaSource} [%file:%line] - %m%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss.SSS} %-5p %logger{36} %X{akkaSource} [%file:%line] - %m%n</pattern>
</encoder>
</appender>
<appender name="abc" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/worker.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/worker-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<appender name="xyz" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/transformer.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/transformer-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<logger name="com.xxx.yyy.zzz" level="INFO" additivity="true">
<appender-ref ref="xyz"/>
</logger>
<logger name="com.aaa.bbb.ccc" level="INFO" additivity="true">
<appender-ref ref="abc"/>
</logger>
<root>
<level value="INFO" />
<appender-ref ref="STDOUT" />
</root>
Các vấn đề liên quan
- 1. Đăng nhập vào hai tệp với các cài đặt khác nhau
- 2. Sử dụng API java.util.logging để đăng nhập các cấp khác nhau để phân tách các tệp
- 3. Đăng nhập vào tệp khác với log4cxx
- 4. Hệ thống ghi đè.Diagnostics.Trace.WriteLine để đăng nhập vào một tệp
- 5. Đăng nhập vào hai loại tệp nhật ký khác nhau trong Codeigniter
- 6. CocoaLumberjack FileLogger đăng nhập vào nhiều tệp
- 7. Cách cấu hình log4j để đăng nhập các mức nhật ký khác nhau cho các tệp khác nhau cho cùng một bộ ghi
- 8. Các cấp độ đăng nhập khác nhau trong python
- 9. nodejs và đăng nhập qua các mô-đun khác nhau
- 10. Có cách nào thông minh để đưa ra các thông điệp ưu tiên khác nhau không?
- 11. Làm thế nào để biết khi có quá nhiều thông điệp đăng nhập?
- 12. Sử dụng log4net để ghi vào nhật ký khác nhau
- 13. Khi nào cần đăng nhập vào sổ ghi sự kiện?
- 14. java log4j chọn tệp nào cần đăng nhập vào
- 15. Sự khác nhau giữa thông tin đăng nhập và thông tin đăng nhập trong SQL Server 2008 là gì?
- 16. Đăng nhập vào một tệp trên Android
- 17. log4j2 - Đăng nhập vào tập tin và giao diện điều khiển (với mức độ khác nhau)
- 18. (Java) ghi sự kiện để đăng nhập tệp văn bản
- 19. Cách trình bày thông tin đăng nhập để mở tệp?
- 20. Làm thế nào tôi có thể trực tiếp đầu ra log4j để mức độ đăng nhập khác nhau đi đến các ứng dụng khác nhau?
- 21. Mẫu để lưu và ghi vào các định dạng tệp khác nhau
- 22. Làm thế nào để ngăn chặn thông điệp đăng nhập cho nHibernate
- 23. nút đăng nhập google google và nút đăng nhập facebook trông hoàn toàn khác nhau
- 24. Chủ đề C# - Đăng thông điệp giữa các chủ đề
- 25. Đăng nhập thiết bị vào tệp
- 26. Xuất Jersey đăng nhập vào một tệp?
- 27. Ghi lại thông tin đăng nhập bằng Spring Security
- 28. Để đăng nhập hoặc không đăng nhập?
- 29. Làm thế nào tôi có thể đặt log4net để đăng nhập các tệp của tôi vào các thư mục khác nhau mỗi ngày?
- 30. Danh bạ trên máy khác - Thông tin đăng nhập
tôi cần phải làm điều này loại điều để tôi có thể có một appender không-line-thức ăn và một appender thường xuyên để cùng một tập tin. Cảm ơn thông tin này. – djangofan
IMO additivity = false phải là mặc định nếu chỉ định appender-ref khác nhau. Rất thường xuyên, chúng tôi nhận được ứng dụng trong đó một số mô-đun sẽ là máy phát nhật ký rất thường xuyên do một số sự kiện hẹn giờ và chúng tôi muốn tách các nhật ký đó thành các tệp khác nhau. Ghi nhật ký tương tự trong 10 tệp khác nhau thực sự không có ý nghĩa. Vì vậy, nó phải là một lựa chọn trong tính năng không mặc định. Kể từ khi đăng nhập được viết lại cùng một sai lầm nên đã được sửa chữa bởi cùng một tác giả. –
Tôi muốn đăng nhập lỗi, gỡ lỗi, thông báo thông tin trong các tệp khác nhau tương ứng. Có thể với logback.xml – Qasim