Danh sách các ứng viên

Trình ghi nhật ký cho phép bạn lưu dữ liệu vào nhiều tệp cùng một lúc. Các luồng dữ liệu đầu ra như vậy được gọi là appender (từ append). Có khá nhiều ứng dụng tiêu chuẩn, vì vậy chúng tôi sẽ chỉ đề cập đến những ứng dụng phổ biến nhất:

ứng dụng Sự miêu tả
1 Bảng điều khiển In dữ liệu ra bàn điều khiển
2 tài liệu Xuất dữ liệu ra file
3 Hàng ngàyLănTập tin Xuất dữ liệu ra tệp, tệp được ghi đè theo chu kỳ
4 không đồng bộ Cho phép bạn ghi dữ liệu vào ứng dụng khác một cách không đồng bộ
5 Ổ cắm Ghi dữ liệu vào một ổ cắm cụ thể
6 JDBC Viết tin nhắn vào cơ sở dữ liệu bằng giao thức JDBC
7 Nhật Bản Viết tin nhắn vào cơ sở dữ liệu bằng giao thức JPA
số 8 HTTP Gửi các sự kiện thông qua giao thức HTTP đến một máy chủ từ xa
9 SMTP Lưu trữ tin nhắn trong bộ đệm và sau đó gửi chúng dưới dạng email

Tài liệu tốt cho tất cả các appender có trên trang web chính thức của họ

Và dưới đây chúng tôi sẽ xem xét phổ biến nhất và đơn giản trong số họ.

ConsoleAppender

Appender đơn giản nhất làConsoleApender . Như bạn có thể đoán, anh ấy chỉ viết tin nhắn của mình lên bảng điều khiển. Nó có một số thông số thú vị đối với chúng tôi:

Thuộc tính
1 tên tên ứng viên
2 lọc Cho phép bạn lọc một số tin nhắn
3 cách trình bày Chỉ định định dạng của tin nhắn khi xuất
4 mục tiêu Chỉ định nơi để viết: SYTEM_OUThoặcSYSTEM_ERR

Nó rất dễ dàng để cấu hình nó:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%m%n"/>
        </Console>
    </Appenders>
      <Loggers>
        <Root level="error">
        <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
    </Configuration>

FileAppender

Appender hữu ích nhất làFileAppender . Không giống như ConsoleAppenderanh ấy viết tin nhắn của mình vào một tập tin. Điều này rất hữu ích khi ứng dụng của bạn đang chạy ở đâu đó trên máy chủ. Nó có rất nhiều tham số, bởi vì nó phải có khả năng ghi tệp trên các hệ điều hành khác nhau.

Nhưng chúng tôi sẽ chỉ xem xét phổ biến nhất trong số họ.

1 tên Chỉ định tên của appender
2 lọc Cho phép bạn lọc một số tin nhắn
3 cách trình bày Chỉ định định dạng của tin nhắn khi xuất
4 tên tệp Chỉ định tên của tệp để viết tin nhắn
5 nối thêm Nếu true, thì các thông báo sẽ được thêm vào nhật ký cũ, nếu false- tệp nhật ký sẽ được tạo lại mỗi khi ứng dụng được khởi động.
6 kích thước bộ đệm Đặt kích thước bộ đệm theo byte
7 ngay lập tứcFlush Nếu true, thì mỗi tin nhắn thực sự được ghi vào đĩa ngay lập tức (không có bộ đệm). Nhật ký bắt đầu hoạt động chậm, nhưng điều này giúp bạn không bị mất dữ liệu khi chương trình gặp sự cố.

Bạn đã biết cách làm việc hiệu quả với các tệp nên các cài đặt này không có gì mới đối với bạn. Cấu hình một bộ ghi như vậy thậm chí còn dễ dàng hơn một bộ ghi bảng điều khiển:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <File name="MyFile" fileName="logs/app.log">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
        </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>
    </Configuration>

CánFileAppender

Appender phổ biến nhất làRollingFileAppender . Không giống như FileAppendernó, nó cho phép bạn chia nhật ký thành nhiều tệp nhỏ. Điều này rất quan trọng đối với các bản ghi lớn. Ngoài ra, nó cho phép bạn thiết lập các quy tắc để làm gì với các tệp cũ sau khi các tệp mới bắt đầu được viết.

Và ứng dụng này có gần một trăm cài đặt khác nhau. Bạn có thể tìm hiểu thêm về chúng tại liên kết .

Hãy xem xét các thuộc tính phổ biến nhất của appender này:

Thuộc tính
1 tên Chỉ định tên của appender
2 lọc Cho phép bạn lọc một số tin nhắn
3 cách trình bày Chỉ định định dạng của tin nhắn khi xuất
4 tên tệp Chỉ định tên của tệp để viết tin nhắn
5 tập tinPattern Chỉ định mẫu đặt tên cho các tệp lưu trữ không còn được ghi
6 chính sách Chỉ định điều kiện khi tập tin bắt đầu được ghi đè
7 chiến lược Mô tả những việc cần làm với các tệp cũ: lưu trữ, lịch sử lưu giữ trong bao nhiêu ngày, v.v.

Đây là một ví dụ tốt:


<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
    </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

Tham số filePatternchỉ định một mẫu để lưu trữ các nhật ký cũ. Ngoài ra còn có hai, khi được kích hoạt, một tệp mới sẽ được ghi:

  • TimeBasedTriggeringPolicy– sẽ hoạt động nếu một ngày mới bắt đầu (ngày hiện tại thay đổi)
  • SizeBasedTriggeringPolicy– sẽ hoạt động nếu kích thước tệp đạt 250 MB