Bạn không muốn kết hợp tất cả mã doanh nghiệp và mã truy cập dữ liệu với ServletContext
(Tất nhiên tôi giả định rằng mã doanh nghiệp và DB của bạn không được kết hợp chặt chẽ bên trong lớp servlet, nhưng chỉ sống trong lớp riêng của chúng các lớp học, không có bất kỳ tham chiếu nào javax.servlet
). Vì vậy, tôi sẽ không khuyên bạn nên sử dụng ServletContext#log()
. Nó cũng rất hiếm khi được sử dụng trong thế giới thực.
Bạn nói đúng rằng log4j là phổ biến, mặc dù nó đã được thành công bởi logback. Thiết lập log4j không cần phải phiền phức. Tôi đề nghị bắt đầu với một tệp thuộc tính khó hiểu hơn một tệp XML. Bạn luôn có thể nâng cấp lên một tệp XML khi bạn hiểu những gì đang xảy ra trong cấu hình log4j.
Tạo tệp có tên log4j.properties
, đặt nó ở đâu đó trong thư mục gốc của đường dẫn lớp, ví dụ: /WEB-INF/classes
(hoặc nếu bạn đang sử dụng một IDE, thư mục gốc của thư mục src
, nó cuối cùng sẽ đến đúng nơi). Bạn cũng có thể giữ nó bên ngoài webapp và thêm đường dẫn của nó vào đường dẫn lớp thời gian chạy của máy chủ bằng cách chỉ định đường dẫn của nó trong thuộc tính shared.loader
của Tomcat/conf/catalina.properties
. Cuối cùng, hãy điền vào như sau:
# Set root logger level and appender name.
log4j.rootLogger = TRACE, console
# Specify appenders.
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
# Configure console appender.
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %m%n
# Configure file appender.
log4j.appender.file.File = /webapp/logs/web.log
log4j.appender.file.DatePattern = '.'yyyy-MM-dd
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %m%n
Ví dụ khởi động này theo mặc định ghi ở mức TRACE
. Bạn có thể thay đổi nó để DEBUG
hoặc INFO
như vậy:
# Set root logger level and appender name.
log4j.rootLogger = INFO, console
này ví dụ cũng theo mặc định sử dụng giao diện điều khiển appender. Nó sẽ đăng nhập vào đầu ra tiêu chuẩn vì nó được cấu hình bởi Tomcat theo vùng đất mặc định trong tệp /logs/localhost.yyyy-MM-dd.log
.
Bạn tuy nhiên có thể thay đổi nó để sử dụng các tập tin appender như vậy:
# Set root logger level and appender name.
log4j.rootLogger = INFO, file
Các thiết lập ConversionPattern
có thể tìm thấy chi tiết trong PatternLayout
javadoc.
Hy vọng điều này sẽ giúp bạn bắt đầu.
Cảm ơn sự giúp đỡ. Tôi dường như không thể tìm thấy đoạn kết nối này của câu đố. Ngoài ra, có lý do nào mà cơ sở ghi nhật ký được xây dựng trong JDK không được sử dụng thường xuyên hơn không? – Wilson
@Wilson - thêm vào cuộc tranh luận đó http://stackoverflow.com/questions/31840/java-logging-vs-log4j và http://stackoverflow.com/questions/582428/java-util-logging-logger-and- log4j – JoseK
@JoseK - Có cách nào đơn giản để ghi nhật ký hoạt động servlet vào một tệp không có log4j hoặc bàn điều khiển không? Tôi đã đăng một câu hỏi cho điều này. Hãy giúp tôi tại - https://stackoverflow.com/questions/23858552/simple-way-to-log-servlet-in-tomcat –