1. 程式人生 > >關於web專案log日誌指定輸出檔案位置配置

關於web專案log日誌指定輸出檔案位置配置

首先我們定義一個可以在執行時動態的找出專案的路徑WebAppRootKey,這麼做的原因是為了在後面配置log4j輸出檔案路徑的時候能隨心配置。

<context-param>
         <param-name>webAppRootKey</param-name>
         <param-value>amt.root</param-value>
</context-param>

然後要定義專案log配置檔案的路徑以及log4j監聽器

<context-param> 
        <param-name
>
log4jConfigLocation</param-name> <param-value>classpath:conf/log4j.xml</param-value> </context-param> <!--定義LOG4J監聽器--> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>

這樣web.xml檔案的配置完畢,然後就是log配置檔案的具體配置檔案:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>

    <!-- 將日誌資訊輸出到控制檯 -->
    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
        <!-- 設定日誌輸出的樣式 -->
        <layout class
="org.apache.log4j.PatternLayout">
<!-- 設定日誌輸出的格式 --> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" /> </layout> <!--過濾器設定輸出的級別--> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <!-- 設定日誌輸出的最小級別 --> <param name="levelMin" value="INFO" /> <!-- 設定日誌輸出的最大級別 --> <param name="levelMax" value="ERROR" /> <!-- 設定日誌輸出的xxx,預設是false --> <param name="AcceptOnMatch" value="true" /> </filter> </appender> <!-- 將日誌資訊輸出到檔案,可以配置多久產生一個新的日誌資訊檔案 --> <appender name="rollingFile" class="org.apache.log4j.DailyRollingFileAppender"> <!-- 設定日誌資訊輸出檔案全路徑名 --> <param name="File" value="${amt.root}/logs/spdbData.log" /> <!-- 設定日誌每小時回滾一次,即產生一個新的日誌檔案 --> <param name="DatePattern" value="'_'yyyy-MM-dd-HH'.log'" /> <!-- 設定日誌輸出的樣式 --> <layout class="org.apache.log4j.PatternLayout"> <!-- 設定日誌輸出的格式 --> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" /> </layout> </appender> <!-- 注意: 1:當additivity="false"時,root中的配置就失靈了,不遵循預設的繼承機制 2:logger中的name非常重要,它代表記錄器的包的形式,有一定的包含關係,試驗表明 2-1:當定義的logger的name同名時,只有最後的那一個才能正確的列印日誌 2-2:當對應的logger含有包含關係時,比如:name=test.log4j.test8 和 name=test.log4j.test8.UseLog4j,則2-1的情況是一樣的 2-3:logger的name表示所有的包含在此名的所有記錄器都遵循同樣的配置,name的值中的包含關係是指記錄器的名稱喲!注意啦! 3:logger中定義的level和appender中的filter定義的level的區間取交集 4:如果appender中的filter定義的 levelMin > levelMax ,則打印不出日誌資訊 --> <!--指定logger的設定,additivity指示是否遵循預設的繼承機制 --> <logger name="test.log4j.test8.UseLog4j_" additivity="false"> <level value ="ERROR"/> <appender-ref ref="rollingFile"/> </logger> <!-- 根logger的設定--> <root> <level value ="info"/> <appender-ref ref="ConsoleAppender"/> <appender-ref ref="rollingFile"/> </root> </log4j:configuration>

專案結構如下:

這裡寫圖片描述

一切準備就緒之後,專案一旦啟動你就能在你規定的輸出位置找到你每天或者每個小時的日誌檔案,log配置檔案還可以進行拓展配置每個檔案的大小以及檔案出錯時的回滾事宜,這裡不做贅述。

相關推薦

關於web專案log日誌指定輸出檔案位置配置

首先我們定義一個可以在執行時動態的找出專案的路徑WebAppRootKey,這麼做的原因是為了在後面配置log4j輸出檔案路徑的時候能隨心配置。 <context-param> <param-name>webAppRo

C語言log日誌管理-支援檔案與終端輸出

目錄 檔案結構 編譯執行 檔案結構 ├── t_color.c ├── t_color.h ├── t_log.c └── t_log.h t_log.c /* file name: t_log.c * author: Rong Tao

web專案Log4j日誌輸出路徑配置問題 問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的文

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配置檔案。 實現分析:一般實現上面需求,需要在修

web專案Log4j日誌輸出路徑配置問題

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配

android log 日誌輸出總結

ive 不同 nat 輸出 erro 應用層 err frame 本地 android log 在不同層使用不同方法。 1、如果是在Native 代碼(hal 和 jni)中使用本地方法 頭文件: #include <utils/Log.h&

Linux - rm -rf 刪除檔案指定移動檔案位置 (李作強)

rm -rf 刪除檔案指定移動檔案位置。 建立回收站機制,它並不真正執行刪除操作,而是將檔案移動到一個特定目錄,可以設定定時清除回收站,或者在回收站裡面的檔案大小達到一定容量時(或者用時間做判斷)執行刪除操作以騰出空間。可以寫個shell指令碼替換rm命令,或者在需要刪除檔案的時候使用mv命

如何使用Docker部署一個web專案並打包成映象檔案

1.建立一個centos映象 通過命令下載dockerhub上的官方映象 docker pull centos 2.建立一個基於centos映象的容器 通過命令docker images檢視伺服器上已有的映象 通過命令 docker run -d

Java web專案中讀取properties,xml檔案

一般專案配置檔案都會在系統啟動的時候進行載入(static塊中): 反射方式獲取properties public class WeixinUtil {     // 成員變數     private

KEIL環境下指定輸出檔案路徑

      我們在KEIL 上面建立的工程,如果不作任何設定而進行編譯、連結等等動作,必定在工程檔案當前目錄產生字尾為 .o .crf .dep .d .lst 等檔案。簡單的工程,其生成的檔案數量尚能容忍,一旦工程裡頭包含的原始檔有一定的規模,到達那個程式設計水平的你一定不

web專案中將上傳的檔案儲存到伺服器的某個資料夾,保證clean tomcat時不會被清理掉

 String testPath = request.getSession().getServletContext().getRealPath("");//tomcat下   File directory = new File(testPath);//設定為當前資料夾

Java Web 專案啟動執行指定的方法

方法一 – 使用註解:@PostConstruct – 說明:@PostContruct是spring框架的註解,在方法上加該註解會在專案啟動的時候執行該方法,也可以理解為在spring容器初始化的時候執行該方法 @PostConstruct public void D

iOS開發 解決Xcode9的Log日誌無法輸出中文的問題

問題描述 Xcode的Log日誌輸出中文的問題,一般都是重寫NSArray,NSDictionary的- (NSString *)descriptionWithLocale:(id)locale;方法進行處理,最近升級到Xcode9會後發現原來的處理邏輯也無法

web專案開啟日誌列印

原文連結:http://blog.csdn.net/qq_37936542/article/details/79045188參考文章地址:點選開啟連結,寫的很清晰一:匯入log4j包或依賴    jar包:log4j-1.2.16.jarmaven依賴:<depende

在Eclipse中匯入一個web專案時所有的jsp檔案全部出錯的處理

匯入了幾個專案總遇到這個問題今天記錄一下解決方法原因是JDK大版本或者小版本不同造成的第一步:        右鍵專案,點選Build Path裡面的Configure Build Path,觀察Libraries裡面是否有紅叉的jar包第二步:remove有問題的jar包,

java web專案啟動載入properties屬性檔案

最近做專案,發現框架裡面封裝的專案一啟動載入所有的properties檔案挺方便好用的就自己動手寫了一個.1.首先要想在專案啟動的的時候就載入properties檔案,就必需在web.xml中配置一個載入properties檔案的監聽器(listener);<!-- P

docker中java專案log日誌時間不正確

檢視 docker 中 java 專案列印的日誌發現,時間相差 8 個小時。考慮是時區的問題。 解決方法如下 Dockerfi

Mybatis中介面和對應的mapper檔案位置配置深入剖析

首先要說明的問題是,Mybatis中介面和對應的mapper檔案不一定要放在同一個包下,放在一起的目的是為了Mybatis進行自動掃描,並且要注意此時java介面的名稱和mapper檔案的名稱要相同,否則會報異常,由於此時Mybatis會自動解析對應的介面和相應

Mybatis中介面和對應的mapper檔案位置配置詳解

      今天遇到一個問題是mybatis中介面和對應的mapper檔案位置不同,而引起的操作也會不同,在網上找了好久最終找到了方法,這裡就簡單的解析一下:        我們知道在典型的maven

log4j自定義級別並將新級別日誌資訊輸出指定帶日期格式的log檔案

log4j.xml的配置如下: <appender name="LOG.EMAIL" class="org.apache.log4j.RollingFileAppender">   <param name="File" value="${catalina.home}/logs/EMAIL_L

linux shell指令碼 springboot專案釋出的shell指令碼 包括日誌輸出指定檔案

     專案釋出,寫了個shell指令碼來啟動專案,包括專案的啟動,關閉 重啟  包括專案的日誌輸出到指定的檔案 ,不為別的,就為了下次專案釋出的時候,能夠直接把指令碼拷貝過去用就行啦!哈哈!! 把這段shell指令碼複製過去,只要把紅色部分改為你自己專案的東西,就可以直接