導航:首頁 > 文件管理 > log4j源碼配置文件

log4j源碼配置文件

發布時間:2023-05-24 07:42:35

java中log4j源碼中是怎麼把替換為後面的參數的

在web.xml中添加配置:下面使用了classpath參數指定log4j.properties文件的位置,這樣log4j的配置文件就不用非要放到src的下面:log4jConfigLocationclasspath:config/log4j/log4j.properties使用spring的監聽器,當應用啟動時來讀取log4j的配置文件org.springframework.web.util.Log4jConfigListener

⑵ log4j.properties 的作用是什麼求詳解

Log4j是Apache的一個開源項目,如果採用log4j輸出日誌,要對log4j載入配置文件的過程有所了解。log4j啟動時,默認會尋找source folder下的log4j.xml配置文件。

若沒有會尋找log4j.properties文件載入配置。配置文件放置位置正確,不用在程序中手動載入log4j配置文件。如果將配置文件放到了config文件夾下,在build path中設置下即可。

通常一個java項目會有很多的配置文件,建議把所有的配置文件放到一個文件夾下,如果不手動設置,不用人為的寫載入log.properties文件的代碼時,直接放src目錄下,千萬要記得,如果新建一個java項目,src文件要弄成原文件包才行。

(2)log4j源碼配置文件擴展閱讀:

使用log4j注意事項:

1、log4j.properties的配置文件需放在src(或者WEB/INFO/classes)目錄下,啟動tomcat進程時log4j引擎也會隨之啟動(也就是log4j會自動初始化)。

2、如果log4j.properties配置文件放在別的目錄,則需要應用程序負責初始化log4j,如spring提供了一個初始化log4j的監聽類,當然你也可以自已寫個servlet初始化log4j。

3、log4j.properties裡面的配置key=value時,value後面一定不能有空格,否則該項配置不能生效,因為log4j沒有處理value後面的空格。

參考資料來源:網路-log4j

⑶ log4j2源碼分析

1.概述
1.1.組件概覽
1.2.靈活的配置
1.2.1.插件發現機制
1.2.2.插件裝配機制
1.2.3.配置文件基本元素與對象的映射關系
2.屬性佔位符
2.1.概述
2.2.Interpolator插值器
2.3.默認屬性配置
3.Logger
3.1.配置示例
3.2.配置詳解
3.3.Logger繼承機制
4.Appender
4.1.概述
4.2.框架支持的Appender實現
4.3.常用Appender詳解
4.3.1.ConsoleAppender
4.3.2.RollingFileAppender
5.Layout
5.1.概述
5.2.PatternLayout
5.2.1.模式字元串
6.Manager
7.Filter

在log4j2中,LogManager就是日誌的門面,相當於slf4j-api中的LoggerFactory.
框架為每個類載入分配了一個單獨的LoggerContext,用於管理所有創建出來的Logger實例.
ContextSelector則負責管理類載入器到對應的LoggerContext實例之間的映射關系.
log4j2中,有5個關鍵概念:

組件架構如下:

在log4j2中,一切皆插件,框架通過 PluginRegistry 掃描並發現插件配置.

PluginRegistry 支持兩種掃描方式

插件配置以 PluginType 的形式保存在插件注冊表中, PluginType 的作用類似於spring中 BeanDefinition ,定義了如何創建插件實例.
插件類通過 @PluginFactory 註解或者 @PluginBuilderFactory 註解配置孝沖插件實例的實例化和屬性注入方式.

log4j2知道如何實例化插件後,我們就可以通過編寫配置文件(如:log4j2.xml),進行插件的實例化和屬性注入了.
Configuration 全局配置對象負責保存所有解析到的配置.
通過 ConfigurationFactory.getConfiguration() 可以使用不同的工廠生產不同的配御或置對象,不同的 Configuration 實現可以解析不同格式的配置,如:xml,yaml,json等.

以xml文件為例,文件中每個元素都會最終對應一個插件實例,元素名稱實際就是PluginType中的name,實例的屬性可以從子元素對應的實例獲取,也可以從自身元素的屬性配置獲取.

因此,xml中dom樹的元素嵌套關系,也就是log4j組件實例的引用嵌套關系.

xml,yaml,json格式文件都可以描述這種嵌套關系,因此log4j2中定義了與文件格式無關的數據結構,Node來抽象配置.

AbstractConfiguration.setup() 負責提取配置,形成Node樹.
AbstractConfiguration.doConfigure() 負責根據Node樹,進行插件實例化和屬性注入.

在log4j2中,環境變數信息(鍵值對)被封裝為StrLookup對象,該對象作用類似於spring框架中的PropertySource.

在配置文件中,基本上所有的值的配置都可以通過參數佔位符引用環境變數信息,格式為:${prefix:key}.

Interpolator內部以Map<String,StrLookup>的方式,封裝了很多StrLookuo對象,key則對應巧拆殲參數佔位符${prefix:key}中的prefix.

同時,Interpolator內部還保存著一個沒有prefix的StrLookup實例,被稱作默認查找器,它的鍵值對數據來自於log4j2.xml配置文件中的<Properties>元素的配置.

當參數佔位符${prefix:key}帶有prefix前綴時,Interpolator會從指定prefix對應的StrLookup實例中進行key查詢,

當參數佔位符${key}沒有prefix時,Interpolator則會從默認查找器中進行查詢.

Interpolator中默認支持的StrLookup查找方式如下(StrLookup查找器實現類均在org.apache.logging.log4j.core.lookup包下):

注意:Properties元素一定要配置在最前面,否則不生效.

log4j2框架會根據LoggerConfig的name建立對象之間的繼承關系.這種繼承機制與java的package很像,name以點進行名稱空間分割,子名稱空間繼承父名稱空間.
名稱空間可以是全限定類名,也可以是報名.整個配置樹的根節點就是RootLogger.
舉例:假如我們的配置的Logger如下:

當通過LogManager.getLogger(name)獲取Logger實例時,會根據name逐級遞歸直到找到匹配的LoggerConfig,或者遞歸到Root根節點為止.

追加器,負責控制Layout進行LogEvent的序列化,以及控制Manager對序列化後的位元組序列進行輸出.

在log4j2.xml配置文件中,配置方式如下:

控制台追加器,用於把日誌輸出到控制台,一般本地調試時使用.
配置示例如下:

文件滾動追加器,用於向本地磁碟文件中追加日誌,同時可以通過觸發策略(TriggeringPolicy)和滾動策略(RolloverStrategy)控制日誌文件的分片,避免日誌文件過大.
線上環境常用.

常用的觸發策略包含兩種:

滾動策略的實現包含兩種:

配置示例如下:

布局對象,職責是把指定的LogEvent轉換成可序列化對象(如:String),或者直接序列化成位元組數組.

log4j2支持很多的序列化格式,如:普通模式字元串,JSON字元串,yaml字元串,XML格式字元串,HTML字元串等等.

類體系如下:

模式布局是我們最常使用的,它通過PatternProcessor模式解析器,對模式字元串進行解析,得到一個List<PatternConverter>轉換器列表和List<FormattingInfo>格式信息列表.

在PatternLayout序列化時,會遍歷每個PatternConverter,從LogEvent中取不同的值進行序列化輸出.

模式字元串由3部分組成,格式為:%(格式信息)(轉換器名稱){選項1}{選項2}...

模式字元串的格式為:
%-(minLength).-(maxLength)(轉換器名稱){選項字元串}
minLength代表欄位的最小長度限制,當欄位內容長度小於最小限制時,會進行空格填充.
minLength前面的-負責控制對齊方式,默認為右對齊(左邊空格填充),如果加上-,則會切換為左對齊方式(右邊空格填充)
maxLength代表欄位的最大長度限制,當欄位內容長度大於最大限制時,會進行內容階段
maxLength前面的-負責控制階段方向,默認為左側階段,如果加上-,則會切換為右側階段
minLength和maxLength之間用點分隔.
格式信息中所有屬性都是可選的,不配置,則使用默認值

log4j2會通過 PluginManager 收集所有類別為Converter的插件,同時分析插件類上的 @ConverterKeys 註解,獲取轉換器名稱,並建立名稱到插件實例的映射關系.
PatternParser識別到轉換器名稱的時候,會查找映射.

框架支持的所有轉換器如下:

有時我們需要對特定的轉換器進行特殊的配置,如:給DatePatternConverter配置時間格式,這個時候需要通過選項字元串配置.
PatternParser會提取模式字元串中的所有選項,保存在一個List<String>中,每個{}包裹的內容作為一個選項.
當創建轉換器時,框架會自動掃描轉換器類中聲明的靜態工廠方法newInstance,同時支持兩種可選的形參,一種是Configuration,另一種String[]則會注入選項列表.
選項列表的識別由不同的轉換器各自定義.

最後,以一個實際的例子解釋配置:
日誌會輸出時間,類名,方法名,消息以及一個換行符.
同時,我們給DatePatternConverter指定了了時間格式,並且限制全限定類名最小長度為5,右截斷,最大為10,左對齊.

管理器的職責主要是控制目標輸出流,以及把保存在ByteBuffer位元組緩沖區中的日誌序列化結果,輸出到目標流中.
如:RollingFileManager需要在每次追加日誌之前,進行滾動檢查,如果觸發滾動還會創建新的文件輸出流.
manager繼承體系如下:

過濾器的核心職責就是對 LogEvent 日誌事件進行匹配,匹配結果分為匹配和不匹配,結果值有3種:接受,拒絕,中立.可由用戶自定義匹配和不匹配的行為結果.

所有實現了 Filterable 介面的組件都可以引用一個過濾器進行事件過濾,包含 LoggerConfig 和 AppenderControl 等.

框架實現的過濾器如下:

⑷ log4j 讀取系統環境變數

最近項目需要使用log4j記錄日誌,log4fj.properties配置文件的片段如下:

${PIF_CONF}就配置在/etc/profile文件中,但是測試了幾次,根本就沒有生效,根據網友的解決方案也沒有解決。

於是決定自己看log4j的讓坦源碼org.apache.log4j.helpers.OptionConverter.java 文件,發現仿滑段log4j 讀取環境變數使用System.getProperty(),通過測試程序,備譽發現System.getProperty("PIF_CONF") 為null,System.getenv("PIF_CONF") 確實獲取到了PIF_CONF的內容。

所以在spring context 初始化的時候採用System.getenv("PIF_CONF") +System.setProperty("PIF_CONF","XXXX")將PIF_CONF設置進props。這樣,log4j就可以讀取到log path了。

⑸ log4j的使用步驟

1.將log4j-1.2.14.jar加入你的項目中;
2.在src/下創建log4j.properties|log4j.xml文件;
3.在web.xml中配置log4j的信息,如下:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
4.在項目webroot下創建你想要保存日誌文件的文件夾及文件,如webroot/logs/web_app.log;
具體log4j.properties文件,給你一個示例吧,如下:
log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.stdout.layout.ConversionPattern=- %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${webapp.root}/logs/webapp.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.logger.com.opensymphony.xwork2=ERROR

# Control logging for other open source packages
log4j.logger.org.springframework=ERROR
log4j.logger.org.quartz=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=ERROR

# Struts OgnlUtil issues unimportant warnings
log4j.logger.com.opensymphony.xwork2.util.OgnlUtil=error
log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack=error
具體寫法可根據自己的項目進行配置。

⑹ shiro框架 配置文件log4j.properties shiro在哪

log4j.properties和shiro沒關系哦。

推薦一套完整的Shiro Demo,免費的。

Shiro介紹文檔:http://www.sojson.com/shiro
Demo已經部署到線上,地址是http://shiro.itboy.net,

管理員帳號:admin,密碼專:sojson.com 如果密碼錯誤,請用sojson。
PS:你可以注冊自己的帳號,然後用管理員賦許可權給你自己的帳號,但是,屬每20分鍾會把數據初始化一次。建議自己下載源碼,讓Demo跑起來,然後跑的更快。

⑺ SpringBoot2.0 基礎案例(02):配置Log4j2,實現不同環境日誌列印

日誌列印是了解Web項目運行的最直接方式,所以在項目開發中是需要首先搭建好的環境。

1、Log4j2特點

1)核心特點

相比與其他的日誌系統,log4j2丟數據這種情況少;disruptor技術,在多線程環境下,性能高;並發的特性,減少了死鎖的發生。

2)性能測試

2、日誌列印之外觀模式

每一種日弊激陸志框架都有自己單獨的API,要使用對應的框架就要使用其對應的API,增加應用程租頃序代碼和日誌框架的耦合性。

《阿里巴巴Java開發手冊》,其中有一條規范做了『強制』要求:

SLF4J日誌API

Java簡易日誌門面(Simple Logging Facade for Java,縮寫SLF4J),是一套包裝Logging 框架的界面程式,使用外觀模式實現。

1、項目結構

2、不同環境的鉛鬧日誌配置

使用最直接的方式,不同環境載入不同的日誌配置。

1)開發環境配置

2)生產環境配置

3、Log4j2的配置文件

1、簡單的測試程序

2、測試效果圖

四、源代碼地址

⑻ jsp中log4j.properties是什麼文件

log4j.properties是Log4j的配置文件,Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日誌信息輸送的目版的地是控制台、文權件、GUI組件、甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,我們能夠更加細致地控制日誌的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。

此外,通過Log4j其他語言介面,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其語法和用法與在Java程序中一樣,使得多語言 分布式系統得到一個統一一致的日誌組件模塊。而且,通過使用各種第三方擴展,您可以很方便地將Log4j集成到J2EE、JINI甚至是SNMP應用中。

在參考資料里有說詳細配置方法的參考資料:

閱讀全文

與log4j源碼配置文件相關的資料

熱點內容
打開多個word文檔圖片就不能顯示 瀏覽:855
騰訊新聞怎麼切換版本 瀏覽:269
app安裝失敗用不了 瀏覽:326
桌面文件滑鼠點開會變大變小 瀏覽:536
手機誤刪系統文件開不了機 瀏覽:883
微信兔子甩耳朵 瀏覽:998
android藍牙傳文件在哪裡 瀏覽:354
蘋果6s軟解是真的嗎 瀏覽:310
c語言代碼量大 瀏覽:874
最新網路衛星導航如何使用 瀏覽:425
以下哪些文件屬於圖像文件 瀏覽:774
zycommentjs 瀏覽:414
確認全血細胞減少看哪些數據 瀏覽:265
文件有哪些要求 瀏覽:484
cad打開時會出現兩個文件 瀏覽:65
什麼是轉基因網站 瀏覽:48
手柄設備有問題代碼43 瀏覽:921
怎麼他么怎麼又網路了 瀏覽:649
java會出現內存泄露么 瀏覽:617
蘋果4s鎖屏後怎麼還顯示歌曲 瀏覽:207

友情鏈接