一、日誌文件輸出說明 日誌目錄: /nchome/nclogs/servername/ ,其中servername集群時目錄類似為master,ncMem01等。非集群時目錄為:server1(服務名) 模塊 輸出格式 說明 anonymous anony-log.log 業務日誌,如果沒有配置模塊 ...
目錄
一、日誌文件輸出說明
日誌目錄: /nchome/nclogs/servername/ ,其中servername集群時目錄類似為master,ncMem01等。非集群時目錄為:server1(服務名)
模塊 | 輸出格式 | 說明 |
---|---|---|
anonymous | anony-log.log | 業務日誌,如果沒有配置模塊,日誌寫在該處 |
nclog | nc-log.log | 系統日誌,是系統的主日誌系統,所有錯誤日誌都會輸出到該文件。 |
pfxx | pfxx-log.log | 外部交換平臺日誌文件 |
portal | portal-log.log | portal日誌文件 |
prealert | pa-log.log | 預警平臺日誌文件 |
accountmanage | am-log.log | 系統管理升級日誌文件 |
nc.bs.framework | fw-log.log | IOC容器框架日誌文件 |
iufo | iufo-log.log | iufo日誌文件 |
userpower | userpower-log.log | 許可權升級日誌文件 |
workflow | wf-log.log | 流程平臺日誌文件 |
nc.bs.framework.mx.thread | mwsummary-log.log | 性能概要日誌,記錄部分中間日誌,結合NMC分析中間件使用 |
sql | sql-log.log | 系統執行sql日誌文件,結合NMC分析使用;一般不用設置為debug,調試時再設置 |
uapweb | uapweb-log.log | uapweb模塊日誌文件 |
nc.bs.framework.codesync | codesync-log.log | 代碼同步日誌文件 |
uapbdsearch | uapbdsearch-log.log | 企業搜索日誌文件 |
uapadp | uap-adp.log | 分佈系統日誌文件 |
scheduleengine | schedule-log.log | 調度引擎日誌文件 |
tmobm | tmobm-log.log | 資金銀企直聯模塊日誌文件 |
nc.itf.uap.queryengine | qeddc-log.log | 查詢引擎日誌文件 |
warningsql | warningsql-log.log | 引發警告條件的sql日誌文件,結合NMC分析使用 |
二、日誌配置說明
2.1 配置文件路徑
/nchome/ierp/bin/logger-config.properties
2.2 配置格式
mobileaim.level=DEBUG
mobileaim.pattern=$$callid=%X{serial} $$thread=[%t] $$host=%X{remoteAddr} $$userid=%X{user} $$ts=%d{yyyy-MM-dd HH:mm:ss} $$remotecall=[%A] $$debuglevel=%p $$msg=%m %n
mobileaim.file=./nclogs/${server}/mobileaim-log.log
mobileaim.size.maxSize=5MB
mobileaim.size.maxIndex=5
2.2.1 參數說明
mobileaim = 模塊名稱 <moduleName>
level = 日誌等級
ALL = new Level("ALL", 0);
TRACE = new Level("TRACE", 1);
DEBUG = new Level("DEBUG", 2);
INFO = new Level("INFO", 3);
WARN = new Level("WARN", 4);
ERROR = new Level("ERROR", 5);
NSTACK = new Level("NSTACK", 5);
FATAL = new Level("FATAL", 6);
OFF = new Level("OFF", 7);
pattern = 日誌輸出格式
file = 日誌輸出文件
size.maxSize = 單日誌文件最大存儲
size.maxIndex = 日誌最大個數
其中pattern配置說明如下:
%m 代碼中指定的具體日誌信息,message
%n 一個回車換行符,Windows平臺為"\r\n",Unix平臺為"\n"
%x 和當前線程相關聯的NDC上下文信息(棧式)
%X{key} 和當前線程相關的MDC上下文變數(key/value形式)
// NCD與MDC見../JAVA/Log4j之MDC和NDC區別和用法
%C className 類名
%M methodName 方法名
%L lineNumber 線程號
%T logType 日誌類型
%A moduleName 模塊名
%t 產生該日誌事件的線程名
%d 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式
%p level,日誌信息的優先順序
三、代碼說明
NC6X的日誌框架為Log4j,NCC後升級為Log4j2
基本日誌類
nc.bs.logging.Log;
// 可以基於該類實現自定義日誌的輸出
Log defLog = Log.getInstance(moduleName);
日誌級別
nc.bs.logging.Level;
ALL = new Level("ALL", 0);
TRACE = new Level("TRACE", 1);
DEBUG = new Level("DEBUG", 2);
INFO = new Level("INFO", 3);
WARN = new Level("WARN", 4);
ERROR = new Level("ERROR", 5);
NSTACK = new Level("NSTACK", 5);
FATAL = new Level("FATAL", 6);
OFF = new Level("OFF", 7);
日誌事件參數類
org.apache.log4j.spi.LoggingEvent;
// NC對該類的繼承
nc.bs.logging.impl.log4j.Log4jLoggingEvent;
pattern參數解析類
org.apache.log4j.PatternLayout
// NC的繼承
nc.bs.logging.impl.log4j.Log4jPatternFormatter;
四、自定義日誌實例
logger-config.properties配置如下:
# liyas add 20200911 介面日誌
uapport.level=DEBUG
uapport.pattern=$$callid=%X{serial} $$thread=[%t] $$host=%X{remoteAddr} $$userid=%X{user} $$ts=%d{yyyy-MM-dd HH:mm:ss} $$debuglevel=%p $$module=[%A] $$class=[%C] $$method=[%M] $$msg=%m %n
uapport.file=./nclogs/${server}/uapport-log.log
uapport.size.maxSize=5MB
uapport.size.maxIndex=5
實例1-新建日誌類
package nc.bs.logging;
import nc.bs.logging.Log;
/**
* 系統對外介面日誌輸出類
* @author liyas 2020-07-27
*
*/
public class UapPortLogger {
private static String LOGFILE = "uapport";
public static void debug(Object msg, Class caller, String methodName) {
Log LOGFILELog = Log.getInstance(LOGFILE);
LOGFILELog.debug(msg, caller, methodName);
}
public static void info(Object msg, Class caller, String methodName) {
Log portLog = Log.getInstance(LOGFILE);
portLog.info(msg, caller, methodName);
}
public static void error(Object msg, Throwable exception, Class caller,
String methodName) {
Log portLog = Log.getInstance(LOGFILE);
portLog.error(msg, exception, caller, methodName);
}
public static void error(Object msg, Class caller, String methodName) {
Log portLog = Log.getInstance(LOGFILE);
portLog.error(msg, caller, methodName);
}
public static void warn(Object msg, Throwable exception, Class caller,
String methodName) {
Log portLog = Log.getInstance(LOGFILE);
portLog.warn(msg, exception, caller, methodName);
}
public static void warn(Object msg, Class caller, String methodName) {
Log portLog = Log.getInstance(LOGFILE);
portLog.warn(msg, caller, methodName);
}
}
實例2-直接在代碼中使用日誌輸出
// 將日誌輸出至uapport文件
Log.getInstance("uapport").info("message",this.getClass(),"Method");
五、附錄
參考文章
Log4j.properties配置詳解
Log4j之MDC和NDC用法