2012-11-07 27 views
5

Tôi đã viết lớp cho cấp khai thác gỗ tùy chỉnh tức INITLog4j Logging cho các mức độ tùy chỉnh Log trong Java

import org.apache.log4j.Logger; 
import org.apache.log4j.Level; 

public class InitLoggingLevel extends Level { 

    public static final String INITLOGGING_LEVEL = "INITLOGGING"; 
    public static final Level INIT_LOGGING = new InitLoggingLevel(
     DEBUG_INT - 4, INITLOGGING_LEVEL, 7); 

    protected InitLoggingLevel(int level, String levelStr, int syslogEquivalent){ 
     super(level, levelStr, syslogEquivalent); 
    } 
} 

Bây giờ là những gì thay đổi tôi cần phải thực hiện trong log4j.properties và làm thế nào tôi sẽ sử dụng mức INIT khai thác gỗ này trong Lớp Java của tôi?

Trả lời

1

Bạn có thể thử này

log4j.rootLogger=DEBUG, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %c:%L - %m%n 
log4j.category.YOUR_PACKAGE=INFO,YOUR_PACKAGE.InitLoggingLevel 

hoặc có thể xem log4j category hoặc http://veerasundar.com/blog/2009/08/log4j-tutorial-how-to-send-log-messages-to-different-log-files/

+1

tôi đã yêu cầu thay đổi trong log4j.properties để có mức ghi nhật ký là INIT trong trình ghi nhật ký. –

+1

log4j.category.com.impact.qtl12.commons = INIT, com.impact.qtl12.commons.InitLoggingLevel như thế này, và làm thế nào tôi sẽ thực hiện điều này trong lớp java như đối với logger bình thường chúng ta làm: logger.WARN vậy làm thế nào tôi có thể có mức INIT chỉ bằng cách làm logger.INIT hay cái gì khác –

0

Nó có thể là như thế này:

<category name="xxx" additivity="false"> 
      <priority class="your class" value="info"/> 
      <appender-ref ref="xxxlog"/> 
     </category> 
+0

tôi đã yêu cầu log4j.properties –

0

Không biết nếu bạn đã figured it out, nhưng tôi đã tìm thấy bài viết sau, đã giúp tôi.

https://www.owasp.org/index.php/How_to_add_a_security_log_level_in_log4j

Mức mới được in với thẻ ghi dự kiến, nhưng log4j sẽ không nhận ra tầm cao mới trong tập tin tài sản của tôi. Tôi sẽ thấy, những gì tôi có thể làm về điều đó.

2

Bạn cần phải:

  1. Override phương pháp toLevel(String logArgument) như thế này:

    public static Level toLevel(String logArgument) { 
        if (logArgument != null && logArgument.toUpperCase().equals("INITLOGGING")) { 
         return INIT_LOGGING; 
        } 
        return (Level) toLevel(logArgument); 
    } 
    
  2. Viết một dòng cấu hình trong log4j.properties như thế này:

    log4j.logger.[MY_CATEGORY]=INITLOGGING#your-package.InitLoggingLevel

Đó là tất cả!

P .: Cú pháp '#' được mô tả trong lớp học org.apache.log4j.helpers.OptionConverter nguồn.

Các vấn đề liên quan