一、日志文件输出说明

日志目录/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用法

NC-日志配置及代码详解的更多相关文章

  1. Android + Appium 自动化测试完整的环境配置及代码详解

    环境的的搭建 参考大神博客:https://www.cnblogs.com/fnng/p/4540731.html 该博客有一套详细的入门教程,奈何时间有点久远有些东西不能用了,但是参考价值还是有滴. ...

  2. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  3. Nginx 配置及参数详解

    Nginx 配置及参数详解 Nginx Location 指令语法 如下就是常用的 location 配置的语法格式,其中modifier是可选的,location_match就是制定 URI 应该去 ...

  4. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  5. Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解

    http://hi.baidu.com/ltb6w/item/3a51f11926fda60ce75c361d Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解 ...

  6. webpack安装配置使用教程详解

    webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...

  7. OpenVPN下载、安装、配置及使用详解

    OpenVPN下载.安装.配置及使用详解   OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件.使用OpenVPN可 ...

  8. MySql绿色版配置及使用详解

    原文:MySql绿色版配置及使用详解 最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySq ...

  9. Linux NFS服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下(http://xb.xcjl0834.com) 一.NFS服务简介 NFS 是Network File S ...

随机推荐

  1. 【Swift】从零开始的Swift语言学习笔记-1:前言&Hello World

    该系列分为两个大的部分. Swift基本语法 使用Xcode编写iOS应用程式 两个部分会双线并行更新. 本人的学习资料大多为Apple Develop官方上的生肉,难免会有疏漏,望斧正. 另外该系列 ...

  2. iOS 苹果集成登录及苹果图标的制作要求

    前言 如果要上架的应用集成了三方登录,那么在审核时,苹果会强制要求应用也要集成苹果登录.如果应用没有集成一般情况下都会被审核团队给打回来. 苹果集成登录 首先,你需要在开发者中心,找到你的应用,勾选上 ...

  3. [双重 for 循环]打印一个倒三角形

    [双重 for 循环]打印一个倒三角形 核心算法 里层循环:j = i; j <= 10; j++ 当i=1时,j=1 , j<=10,j++,打印10个星星 当i=2时,j=2 , j& ...

  4. 《Java基础——方法的调用》

    Java基础--方法的调用     总结: 1. 在同一个类中-- 对于静态方法,其它的静态和非静态方法都可以直接通过"方法名"或者"类名.方法名"调用它. 对 ...

  5. java项目中VO、DTO以及Entity,各自是在什么情况下应用的

    按照标准来说: entity里的每一个字段,与数据库相对应 vo里的每一个字段,是和你前台页面相对应 dto,这是用来转换从entity到dto,或者从dto到entity的中间的东西 举个例子: h ...

  6. Mapping

    dynamic针对的是新增的字段,不是对mapping中已有的字段 (原有mapping中的字段不受影响,只影响新增的字段) 当dynamic被设置成false的时候,存在新增字段可以被写入到索引文件 ...

  7. 使用 fail2ban 和 FirewallD 黑名单保护你的系统

    如果你运行的服务器有面向公众的 SSH 访问,你可能遇到过恶意登录尝试.本文介绍了如何使用两个实用程序来防止入侵者进入我们的系统. 为了防止反复的 ssh 登录尝试,我们来看看 fail2ban.而且 ...

  8. 复现禅道V16.5的SQL注入(CNVD-2022-42853)

    漏洞详情 禅道V16.5未对输入的account参数内容作过滤校验,导致攻击者拼接恶意SQL语句执行. 环境搭建 环境下载:禅道V16.5 下载后双击运行,进入目录运行start.exe 直接访问即可 ...

  9. 离线安装chrome浏览器的postman插件

    最近开始研究webapi相关的东西,看到chrome浏览器的有个postman插件挺好用的,但是安装包下载下来以后会出现这种情况,这时候我们可以把crx后缀的改成zip格式的然后解压,然后选择开发者模 ...

  10. SQL基础语句入门

    SQL语句入门 起因 学校开设数据库相关的课程了,打算总结一篇关于基础SQL语句的文章. SQL介绍 SQL最早版本是由IBM开发的,一直发展到至今. SQL语言有如下几个部分: 数据定义语言DDL: ...