似乎在appender里面不能直接调用另外的logger,会丢nullpointer,待验证。
log4j自身提供fallback errorhandler,直接实现
不巧的是,我正好不能用,我是需要用来处理一个url数组,要把数据publish到每一个url去,每一个出现exception都不应该影响到下一个的处理,貌似实现ErrorHandler 没办法做到,我的临时处理办法是把publish单独抽出来写到另外一个类里面,这样就可以访问别的logger了。
有空跟踪一下,现在观点保留:
1. Appdender的生命周期,貌似归log4j的logger容器管理,不会每次创建,现在我怀疑是logger容器只是创建一次实例
2.
log4j自身提供fallback errorhandler,直接实现
1 package org.apache.log4j.spi;
2 import org.apache.log4j.Appender;
3 import org.apache.log4j.Logger;
4 public interface ErrorHandler extends OptionHandler {
5 void setLogger(Logger logger);
6 void error(String message, Exception e, int errorCode);
7 void error(String message);
8 void error(String message, Exception e, int errorCode,
9 LoggingEvent event);
10 void setAppender(Appender appender);
11 void setBackupAppender(Appender appender);
12 }
2 import org.apache.log4j.Appender;
3 import org.apache.log4j.Logger;
4 public interface ErrorHandler extends OptionHandler {
5 void setLogger(Logger logger);
6 void error(String message, Exception e, int errorCode);
7 void error(String message);
8 void error(String message, Exception e, int errorCode,
9 LoggingEvent event);
10 void setAppender(Appender appender);
11 void setBackupAppender(Appender appender);
12 }
不巧的是,我正好不能用,我是需要用来处理一个url数组,要把数据publish到每一个url去,每一个出现exception都不应该影响到下一个的处理,貌似实现ErrorHandler 没办法做到,我的临时处理办法是把publish单独抽出来写到另外一个类里面,这样就可以访问别的logger了。
有空跟踪一下,现在观点保留:
1. Appdender的生命周期,貌似归log4j的logger容器管理,不会每次创建,现在我怀疑是logger容器只是创建一次实例
2.
1 # To turn more verbose logging on - change "ERROR" to "WARN" or "DEBUG"
2
3 #log4j.rootCategory=DEBUG, console
4 log4j.rootCategory=WARN, console, errorlog
5
6 log4j.appender.console=org.apache.log4j.ConsoleAppender
7 log4j.appender.console.Threshold=DEBUG
8 log4j.appender.console.layout=org.apache.log4j.PatternLayout
9 log4j.appender.console.layout.ConversionPattern=%d %p [%c{4}] %m%n
10
11 ###
12 # INFO logging for startup event
13 ###
14 log4j.logger.com.atlassian.confluence.lifecycle=INFO, console
15 log4j.additivity.com.atlassian.confluence.lifecycle=false
16
17 ###
18 # INFO logging for upgrade tasks.
19 ###
20 log4j.logger.com.atlassian.confluence.upgrade=INFO, console
21 log4j.additivity.com.atlassian.confluence.upgrade=false
22
23 ###
24 # THREAD LOCAL ERROR LOG APPENDER
25 ###
26 log4j.appender.errorlog=com.atlassian.core.logging.ThreadLocalErrorLogAppender
27 log4j.appender.errorlog.Threshold=WARN
28
29 #log4j.logger.velocity=DEBUG, console
30 #log4j.additivity.velocity=false
31
32 ## mail removal debugging
33 log4j.logger.com.atlassian.confluence.mail.actions=INFO, console
34
35 # suppress WARN log statements from the ReadWriteCache class (CONF-2517)
36 log4j.logger.net.sf.hibernate.cache.ReadWriteCache=ERROR, console
37
38 #####################
39 # Hibernate logging #
40 #####################
41
42 # suppress JDBCExceptionReporter warnings (there can be a few of these under DB2)
43 log4j.logger.net.sf.hibernate.util.JDBCExceptionReporter=ERROR, console
44
45 # suppress warnings from the SessionImpl (like Narrowing proxy to class com.atlassian.confluence.pages.Page - this operation breaks ==)
46 log4j.logger.net.sf.hibernate.impl.SessionImpl=ERROR, console
47
48 # suppress PDF export logs to errors only
49 log4j.logger.com.atlassian.confluence.importexport.impl.PdfExporter=ERROR, console
50
51 # suppress FileUtils (file management) warnings
52 log4j.logger.bucket.util.FileUtils=ERROR, console
53
54 #log4j.logger.com.atlassian.confluence.search.UnindexingHibernateInterceptor=DEBUG, console
55 #log4j.additivity.com.atlassian.confluence.search.UnindexingHibernateInterceptor=false
56
57 ### useful confluence classes
58 #log4j.logger.com.atlassian.confluence=INFO, console
59 #log4j.additivity.com.atlassian.confluence=false
60 #log4j.logger.com.atlassian.confluence.setup=DEBUG, console
61 #log4j.logger.com.atlassian.confluence.setup.actions=DEBUG, console
62 #log4j.logger.com.atlassian.confluence.util=DEBUG, console
63
64 ### show progress building of ANCESTOR table
65 #log4j.logger.com.atlassian.confluence.util.AncestorTableBuilder=INFO, console
66
67 ### hibernate
68 #log4j.logger.net.sf.hibernate=DEBUG, console
69 #log4j.additivity.net.sf.hibernate=false
70
71 ### ehcache
72 #log4j.logger.net.sf.ehcache=DEBUG, console
73 #log4j.additivity.net.sf.ehcache=false
74
75 ### log JDBC bind parameters ###
76 # log4j.logger.net.sf.hibernate.type=DEBUG
77
78 ### hibernate caching activity
79 #log4j.logger.net.sf.hibernate.cache=DEBUG
80
81 ### log prepared statement cache activity ###
82 #log4j.logger.net.sf.hibernate.ps.PreparedStatementCache=DEBUG
83
84 ### opensymphony (sitemesh, webwork, xwork)
85 #log4j.logger.com.opensymphony=DEBUG, console
86
87 ### Spring
88 # log4j.logger.org.springframework=WARN, console
89 # log4j.logger.springframework.transaction.support.TransactionSynchronizationManager=DEBUG
90 # com.atlassian.confluence.setup.spring.SpringSessionInViewFilter=DEBUG
91 # log4j.additivity.org.springframework=true
92
93 ### Apache stuff
94 # log4j.logger.org.apache=WARN, console
95 # log4j.additivity.org.apache=false
96
97 ### WIKI Engine
98 #log4j.logger.com.atlassian.confluence.importexport=WARN, console
99 #log4j.logger.com.atlassian.confluence.renderer=WARN, console
100
101
102
103 ####
104 # PROFILING LOG APPENDER
105 ###
106 #log4j.appender.profiling=com.atlassian.confluence.util.profiling.ProfilingLogAppender
107 #log4j.appender.profiling.Threshold=DEBUG
108 #log4j.appender.profiling.layout=org.apache.log4j.PatternLayout
109 #log4j.appender.profiling.layout.ConversionPattern=%d %p [%c{4}] %m%n
110
111 ## profiling debugging
112 #log4j.logger.net.sf.hibernate.cache.ReadWriteCache=DEBUG, profiling
113 #log4j.logger.com.atlassian.confluence.setup.spring.SpringSessionInViewFilter=DEBUG, profiling
114 #log4j.logger.com.atlassian.confluence.util=DEBUG, profiling
115 #log4j.logger.org.springframework.orm.hibernate.HibernateTransactionManager=DEBUG, profiling
116 #log4j.logger.com.opensymphony.oscache.web.filter=DEBUG, profiling
117 #log4j.logger.net.sf.ehcache.store.MemoryStore=DEBUG, profiling
118 #log4j.logger.net.sf.hibernate.ps.PreparedStatementCache=DEBUG, profiling
119 #log4j.logger.net.sf.hibernate.type=DEBUG, profiling
2
3 #log4j.rootCategory=DEBUG, console
4 log4j.rootCategory=WARN, console, errorlog
5
6 log4j.appender.console=org.apache.log4j.ConsoleAppender
7 log4j.appender.console.Threshold=DEBUG
8 log4j.appender.console.layout=org.apache.log4j.PatternLayout
9 log4j.appender.console.layout.ConversionPattern=%d %p [%c{4}] %m%n
10
11 ###
12 # INFO logging for startup event
13 ###
14 log4j.logger.com.atlassian.confluence.lifecycle=INFO, console
15 log4j.additivity.com.atlassian.confluence.lifecycle=false
16
17 ###
18 # INFO logging for upgrade tasks.
19 ###
20 log4j.logger.com.atlassian.confluence.upgrade=INFO, console
21 log4j.additivity.com.atlassian.confluence.upgrade=false
22
23 ###
24 # THREAD LOCAL ERROR LOG APPENDER
25 ###
26 log4j.appender.errorlog=com.atlassian.core.logging.ThreadLocalErrorLogAppender
27 log4j.appender.errorlog.Threshold=WARN
28
29 #log4j.logger.velocity=DEBUG, console
30 #log4j.additivity.velocity=false
31
32 ## mail removal debugging
33 log4j.logger.com.atlassian.confluence.mail.actions=INFO, console
34
35 # suppress WARN log statements from the ReadWriteCache class (CONF-2517)
36 log4j.logger.net.sf.hibernate.cache.ReadWriteCache=ERROR, console
37
38 #####################
39 # Hibernate logging #
40 #####################
41
42 # suppress JDBCExceptionReporter warnings (there can be a few of these under DB2)
43 log4j.logger.net.sf.hibernate.util.JDBCExceptionReporter=ERROR, console
44
45 # suppress warnings from the SessionImpl (like Narrowing proxy to class com.atlassian.confluence.pages.Page - this operation breaks ==)
46 log4j.logger.net.sf.hibernate.impl.SessionImpl=ERROR, console
47
48 # suppress PDF export logs to errors only
49 log4j.logger.com.atlassian.confluence.importexport.impl.PdfExporter=ERROR, console
50
51 # suppress FileUtils (file management) warnings
52 log4j.logger.bucket.util.FileUtils=ERROR, console
53
54 #log4j.logger.com.atlassian.confluence.search.UnindexingHibernateInterceptor=DEBUG, console
55 #log4j.additivity.com.atlassian.confluence.search.UnindexingHibernateInterceptor=false
56
57 ### useful confluence classes
58 #log4j.logger.com.atlassian.confluence=INFO, console
59 #log4j.additivity.com.atlassian.confluence=false
60 #log4j.logger.com.atlassian.confluence.setup=DEBUG, console
61 #log4j.logger.com.atlassian.confluence.setup.actions=DEBUG, console
62 #log4j.logger.com.atlassian.confluence.util=DEBUG, console
63
64 ### show progress building of ANCESTOR table
65 #log4j.logger.com.atlassian.confluence.util.AncestorTableBuilder=INFO, console
66
67 ### hibernate
68 #log4j.logger.net.sf.hibernate=DEBUG, console
69 #log4j.additivity.net.sf.hibernate=false
70
71 ### ehcache
72 #log4j.logger.net.sf.ehcache=DEBUG, console
73 #log4j.additivity.net.sf.ehcache=false
74
75 ### log JDBC bind parameters ###
76 # log4j.logger.net.sf.hibernate.type=DEBUG
77
78 ### hibernate caching activity
79 #log4j.logger.net.sf.hibernate.cache=DEBUG
80
81 ### log prepared statement cache activity ###
82 #log4j.logger.net.sf.hibernate.ps.PreparedStatementCache=DEBUG
83
84 ### opensymphony (sitemesh, webwork, xwork)
85 #log4j.logger.com.opensymphony=DEBUG, console
86
87 ### Spring
88 # log4j.logger.org.springframework=WARN, console
89 # log4j.logger.springframework.transaction.support.TransactionSynchronizationManager=DEBUG
90 # com.atlassian.confluence.setup.spring.SpringSessionInViewFilter=DEBUG
91 # log4j.additivity.org.springframework=true
92
93 ### Apache stuff
94 # log4j.logger.org.apache=WARN, console
95 # log4j.additivity.org.apache=false
96
97 ### WIKI Engine
98 #log4j.logger.com.atlassian.confluence.importexport=WARN, console
99 #log4j.logger.com.atlassian.confluence.renderer=WARN, console
100
101
102
103 ####
104 # PROFILING LOG APPENDER
105 ###
106 #log4j.appender.profiling=com.atlassian.confluence.util.profiling.ProfilingLogAppender
107 #log4j.appender.profiling.Threshold=DEBUG
108 #log4j.appender.profiling.layout=org.apache.log4j.PatternLayout
109 #log4j.appender.profiling.layout.ConversionPattern=%d %p [%c{4}] %m%n
110
111 ## profiling debugging
112 #log4j.logger.net.sf.hibernate.cache.ReadWriteCache=DEBUG, profiling
113 #log4j.logger.com.atlassian.confluence.setup.spring.SpringSessionInViewFilter=DEBUG, profiling
114 #log4j.logger.com.atlassian.confluence.util=DEBUG, profiling
115 #log4j.logger.org.springframework.orm.hibernate.HibernateTransactionManager=DEBUG, profiling
116 #log4j.logger.com.opensymphony.oscache.web.filter=DEBUG, profiling
117 #log4j.logger.net.sf.ehcache.store.MemoryStore=DEBUG, profiling
118 #log4j.logger.net.sf.hibernate.ps.PreparedStatementCache=DEBUG, profiling
119 #log4j.logger.net.sf.hibernate.type=DEBUG, profiling