用友NC系列産品-日志配置及代碼說明
目錄
- 一、日志檔案輸出說明
- 二、日志配置說明
- 2.1 配置檔案路徑
- 2.2 配置格式
- 2.2.1 參數說明
- 三、代碼說明
- 四、自定義日志執行個體
- 執行個體1-建立日志類
- 執行個體2-直接在代碼中使用日志輸出
- 五、附錄
- 參考文章
一、日志檔案輸出說明
日志目錄: /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用法