log4j category logger


Category 對log信息進行分類篩選,通俗的講就是什麼信息應該被輸出,什麼log信息應該被忽略
category 可以讓log 按照classpath 分類
category 是有繼承分層的,命名爲com.foo的category是被命名爲com.foo.bar的category的parent,
最上層的Category被稱爲根(root category),根category有兩個特點:
(1)它總是存在
(2)它的名字不能被直接得到
一個沒有被定義優先級別的category將自動根據層次關係從它的parent或ancestor繼承優先級別。
一個category 的log 信息默認將被輸出到該category的appender 和 parent appender, 我們可以用additivity ="false" 限制。
<category name="com.foo.bar" additivity="false">
<priority value="info" />
<appender-ref ref="async" />
</category >
以 pgngn的 log4j.xml爲例:
<!-- DVE base category -->
<category name="com.ericsson">
<priority value="WARN" />
</category>
<!-- API-PAS -->
<category name="com.ericsson.pas">
<priority value="WARN" />
</category>
<root>
<appender-ref ref="SERVERLOG" />
</root>
<root> 爲root category, com.ericsson category 是 com.ericsson.pas 的parent.
org.quartz.core.JobRunShell 類的log 由於找不到對應的 category,最終由 root category 控制,並且root category 沒有Level 限制,所以MCA21的quartz log會在pas-application.log中出現:
2014-07-11 16:23:10,001 [eduler_Worker-5] DEBUG [org.quartz.core.JobRunShell] Calling execute on job DEFAULT.batchJobInvokerInvoker


===============補充160729
logger 已經替代caegory


下面是在log4j官方的API中寫的,足以能解釋logger與category的區別。。。 


public class Category extends java.lang.Object implements Appender Attachable This class has been deprecated and replaced by the Logger subclass. It will be kept around to preserve backward compatibility until mid 2003. 


Logger is a subclass of Category, i.e. it extends Category. In other words, a logger is a category. Thus, all operations that can be performed on a category can be performed on a logger. Internally, whenever log4j is asked to produce a Category object, it will instead produce a Logger object. Log4j 1.2 will never produce Category objects but only Logger instances. In order to preserve backward compatibility, methods that previously accepted category objects still continue to accept category objects. 


For example, the following are all legal and will work as expected. 


       // Deprecated form:       


              Category cat = Category.getInstance("foo.bar")      


      // Preferred form for retrieving loggers:     


              Logger logger = Logger.getLogger("foo.bar")  


The first form is deprecated and should be avoided. 


There is absolutely no need for new client code to use or refer to the Category class. Whenever possible, please avoid referring to it or using it. 


See the short manual for an introduction on this class. 


See the document entitled preparing for log4j 1.3 for a more detailed discussion. 

發佈了27 篇原創文章 · 獲贊 5 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章