日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎样在log4j.xml配置文件中引入变量:小公司经验较多的我和阿里UC等大公司经验较多的Boss,一些技术交流和探讨...

發布時間:2025/3/17 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎样在log4j.xml配置文件中引入变量:小公司经验较多的我和阿里UC等大公司经验较多的Boss,一些技术交流和探讨... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

?? ??從最初學習使用log4j的時候,網上和書本上主要都是使用“log4j.properties”這種屬性格式,配置日志。 多年以來,一直使用這種格式,總的來說,簡單、夠用。
?
? ??而有十多年經驗的Boss,不建議使用properties格式配置,而是用xml格式配置。Boss之前在阿里(支付寶、淘寶)、UC等大公司工作過。

?? ?我們有個很明顯的不同:? 我比較注重,簡單、快速。Boss比較注重,規范、嚴謹。

? 我的觀點:沒有對與錯,只有適用與不適用。每個人都是根據自己的經歷和追求,做出的技術選擇。對于技術使用者來講,明白不同配置的好處和壞處,才是需要注意的。

? 就log4j.xml這種配置來說,功能確實可能更多一些,可以單獨把 業務日志和普通的系統日志分離,運維過程中,很容易看到業務錯誤,從而更快的解決問題。
?------------------------------------------------------------------------------------------------------------
? ? ??另外,Boss覺得需要把log4j的輸出目錄 配置 成變量。 比如:<param name="File" value="${log4jOutputPath}/front/default.log" />, log4jOutputPath可以是“C:/log4j/”。

? ?? Boss根據之前在阿里的工作經驗,開發和運維可能完全是2撥人。開發只管寫代碼,把代碼寫好,沒有功能和業務問題。運維,負責把代碼部署好,域名解析、Nginx、Tomcat、日志配置。運維導致的問題,運維背鍋。功能問題,開發背鍋。職責分明,流水化作業。
? ? 我對這種流水化的作業是非常認同的,這樣的企業生產效率才高,才能為國家和社會創造更多的價值。

? ?而象武漢一起好等很多在技術方面,偏向中小型規模的企業來說,開發和運維很可能就是“同一撥人”。這個時候,系統配置要怎么做,就是個值得探討的問題了。
?------------------------------------------------------------------------------------------------------------
? ?Boss最初建議,修改Tomcat的啟動腳本,在里面增加變量配置,比如“-Dlog4jOutputPath=c:/log4j”。

? ? 我一聽,就不太贊成這種做法了。對于開發與運維都是一撥人,經常需要和其它開發人員交流的情況,修改Tomcat自身的配置比較麻煩。
為什么這么說呢?

? ?Tomcat是系統級的程序,而我們的代碼是應用級的程序。開發者,對自己的應用程序,一般是掌控度非常高的,但是對于Tomcat等不是自己寫的系統程序,把控度比較低。Tomcat的隨便一行啟動代碼,不小心改錯了,就啟動不了了。
? ?修改Tomcat還有壞處,本地開發、線上部署、交接給其它客戶,還得讓客戶去修改Tomcat這個和咱們的程序無關的配置,是不科學的。

? ?我的建議是,把這些配置,放在外圍,寫入個文件,比如startupTomcat.sh,在啟動的時候指定參數。每個人都可以很靈活地修改log4j等配置參數。
? ?初步商議,我們采用這種做法。
?
? ?總結下:
<appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${log4jOutputPath}/front/default.log" /><!-- 設置日志輸出文件名 --> </appender>

啟動的時候,增加VM參數,-Dlog4jOutputPath=c:/log4j ----------------------------------------------------------------------------------------------------------
第2 種做法,適合開發和運維都是同一人的情況,把log4j的變量,放在Web.xml里,部署的時候,需要手動修改這個變量。

log4j配置

可在web.xml中配置log4j.xml的位置,參數名稱為:log4jXmlPath。

也可以,配置log4j的日志輸出位置的目錄,參數名稱為:log4jOutputPath。

<servlet><servlet-name>Log4jInit</servlet-name><servlet-class>cn.fansunion.common.web.Log4jInit</servlet-class> <init-param> <param-name>log4jXmlPath</param-name> <param-value>C:/log4j.xml</param-value> </init-param> <init-param> <param-name>log4jOutputPath</param-name> <param-value>C:/log4j/xiaolei2</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet>


? ??注意:這2個參數都必須輸入絕對地址,如果log4jXmlPath沒有值,或者對應的文件不存在,將把classpath下的log4j.xml作為默認配置文件。如果再找不到,將報錯,log4j配置失敗。

如果log4jOutputPath沒有值,或者對應的文件不存在,將把classpath下的log4j文件夾作為默認的輸出目錄。

Author:
fansunion@qq.com 2015年1月8日

Java代碼?Log4jInit.java

public class Log4jInit extends HttpServlet {private static final long serialVersionUID = 1L;public void init(ServletConfig config) throws ServletException {// 從web.xml中找到log4j的輸出目錄String log4jOutputPath = config.getInitParameter("log4jOutputPath");// 默認的日志輸出位置if (StringUtils.isBlank(log4jOutputPath)) {log4jOutputPath = Log4jInit.class.getClassLoader().getResource("").getFile()+ "/log4j";}File log4jOutputPathFile = new File(log4jOutputPath);// 如果輸出文件不存在,手動創建boolean log4xmlFileExists = log4jOutputPathFile.exists();if (!log4xmlFileExists) {System.out.println(log4jOutputPathFile.mkdirs());}// log4j.xml文件中的變量是在這里設置的System.setProperty("log4jOutputPath", log4jOutputPath);// 從web.xml中找到log4j.xml的輸出目錄String log4jXmlPath = config.getInitParameter("log4jXmlPath");boolean exist = false;// 如果在web.xml手動配置,log4jXmlPath應該使用絕對地址,否則,就使用默認的位置和文件名就行if (StringUtils.isNotBlank(log4jXmlPath)) {File file = new File(log4jXmlPath);exist = file.exists();}// log4jXmlPath默認位于classpath下log4j.xmlif (!exist) {URL resource = Log4jInit.class.getClassLoader().getResource("log4j.xml");if (resource != null) {log4jXmlPath = resource.getFile();}}DOMConfigurator.configure(log4jXmlPath);} }
----------------------------------------------------------------------------------------------------------
??從技術方面的學習,加入一起好,遇到Boss,是我人生的大幸。要不然,我很難這么快就了解阿里等大公司的一些實際做法。
? 我決定扎根武漢,是不太可能去阿里系工作的。

??懷揣夢想的我,也不可能委身于阿里。


? 小雷FansUnion-博學的互聯網技術工作者,全棧式多屏開發工程師

? 2015年1月25日

? 湖北-武漢-循禮門

轉載于:https://my.oschina.net/jiutianniao/blog/400279

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的怎样在log4j.xml配置文件中引入变量:小公司经验较多的我和阿里UC等大公司经验较多的Boss,一些技术交流和探讨...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91高跟黑色丝袜呻吟在线观看 | 欧美大肚乱孕交hd孕妇 | 性生交大片免费看3p | 免费欧美黄色 | 日本www在线 | 美国一级大黄一片免费中文 | 乱人伦中文字幕 | 国产成人超碰人人澡人人澡 | 天堂精品久久 | 爆乳熟妇一区二区三区 | 青青青视频免费 | 六月色丁香 | 超碰网址 | 久久久国产精品无码 | v99av| 天天操天天看 | 毛片天天看 | 久久成人免费视频 | 97综合网| 日韩在线观看视频一区二区 | 欧美孕妇性xx | 日韩综合av| 国产高清一级 | 精品国产乱码一区二区 | 欧美亚洲一 | 久久性生活视频 | 床戏高潮呻吟声片段 | 欧美片在线观看 | 日韩综合一区 | 99久久这里只有精品 | 2023毛片| 99re热在线视频 | 亚洲一区二区三区在线播放 | 在线免费观看视频你懂的 | 黄色网址免费 | 永久免费精品视频 | 好吊视频一区二区三区四区 | 精品人妻一区二区三区久久夜夜嗨 | 国产精品久久久久久久裸模 | 影音先锋在线播放 | 国产成人自拍在线 | 国产18页 | 秋霞成人午夜伦在线观看 | 天天射天天拍 | 91日韩一区二区 | 粉嫩av一区二区夜夜嗨 | 欧美三区 | 天天综合网久久综合网 | 日韩无码精品一区二区 | 国产一区二区自拍视频 | 男女污污网站 | 女人张开双腿让男人捅 | 狠狠干女人| av网站不卡| 国产精品丝袜在线 | 麻豆传媒映画官网 | 天天天天天天操 | 视频一区二区三区精品 | 美国黄色av | 欧美一区二区三区免费看 | 国产99久久久 | 欧美日韩生活片 | 一区国产在线 | 日韩精品电影 | 美女隐私免费看 | 97人人澡人人爽人人模亚洲 | 欧美色频 | 黄色一级片视频 | 奇米影视首页 | 丰满护士巨好爽好大乳 | 99热偷拍| 夜夜爽夜夜叫夜夜高潮漏水 | 国产成人精品一区二区在线观看 | 国产一卡二卡在线播放 | 亚洲第一视频网 | 国产精品久久在线 | 成人午夜av在线 | 国产精品成人免费视频 | 国产精品69久久久 | 女攻总攻大胸奶汁(高h) | 一级黄色片免费观看 | 亚洲精品视频免费观看 | 香蕉久久夜色精品升级完成 | 日日干夜夜爽 | 国产精品sm调教免费专区 | 粉嫩av四季av绯色av | 在线观看日韩中文字幕 | 女生被草 | 最近中文字幕在线观看视频 | 国产精品久久久久久白浆 | 97免费在线 | 少妇闺蜜换浪荡h肉辣文 | 精品黑人一区二区三区观看时间 | 亚洲精品一区二区三区不卡 | 亚洲一区 欧美 | 国产精品视频一区在线观看 | www.五月.com| 欧美性受xxx | 奇米影视奇米色 |