日志系统使用规范docWord文档下载推荐.docx
- 文档编号:13881244
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:42
- 大小:96.73KB
日志系统使用规范docWord文档下载推荐.docx
《日志系统使用规范docWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《日志系统使用规范docWord文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。
3.2.3日志格式设置11
3.2.4日志输出11
3.1.5日志分类和XML输出13
3.1.5.1XML格式规范13
4.日志规范15
4.1日志API的选择15
4.2日志级别的选择15
4.3日志信息选择15
4.5日志输出文件16
4.6多线程环境16
4.4错误日志输出17
4.5代码日志规范17
1.介绍
日志系统主要解决运行时刻系统的状态跟踪,为潜在的系统维护和分析提供信息收集的手段。
本文档主要介绍NCV5日志API的使用、概念、配置和使用规范。
NCV5的日志系统以模块为中心,可以按照每个模块配置该模块所需要输出的信息量、日志级别、输出位置,同时考虑到了模块的父子关系,通过模块的父子关系,可以精确调控各个层次的信息输出,如关闭模块的日志输出、调整模块的日志信息等。
2.API详解
日志系统的API较为简单,大部分程序员只要关注这一节的内容即可。
日志系统的API根据需求主要分为三大部分,第一个部分为日志API,第二个部分为Debug的API,主要帮助程序的调试,第三个部分为日志配置,主要用于系统的自动配置。
2.1普通日志API
普通的日志交互主要的类为Log,通过该类,通过该API日志时日志系统使用的模块不会动态变化,普通日志使用的API在应用程序编译时刻就已经确定。
下面是一个普通的日志API使用的例子:
packagenc.bs.demo.logging;
importnc.bs.logging.Log;
publicclassHelloWorld{
privatestaticfinalLoglog=Log.getInstance(HelloWorld.class);
publicstaticvoidmain(Stringargs[]){
log.debug("
Hello,World"
);
}
}
HelloWorld定义了一个Log对象常量,他的模块名为HelloWorld的类名,即nc.bs.demo.logging.HelloWorld,运行该程序,如果输出设定为XML那么输出为:
<
PubThd="
main"
Mod="
nc.bs.demo.logging.HelloWorld"
AModule="
Anonymous"
Lvl="
DEBUG"
>
<
Msg>
Hello,World<
/Msg>
/Pub>
如果输出格式设定为文本(text),那么输出的结构如下:
[main][nc.bs.demo.logging.HelloWorld][Pub][Anonymous]DEBUG-Hello,World
目前我们并没有配置系统的日志格式和日志输出,系统自动为模块继承匿名模块(Anonymous)的所有的属性。
匿名模块没有任何配置自动选取标准输出作为文件的输出格式。
后面在描述模块概念,以及日志配置有着详细介绍。
普通日志的主要的方法描述如下:
Ø
LogstaticLoggetInstance(Stringname)
根据模块名称或取该模块的日志实例,参数一般以类名作为参数
staticLoggetInstance(Classclazz)staticLoggetInstance(Classclazz)
根据类信息获取日志的实例
booleanisDebugEnabled();
检查当前模块日志调试是否启用
voiddebug(Objectmsg,Throwablethrowable);
日志调试信息
voiddebug(Objectmsg);
voiddebug(Objectmsg,Classcaller,StringmethodName)
为了提高效率,日志调试信息
booleanisInfoEnabled();
检查当前模块日志提示信息是否启用
voidinfo(Objectmsg);
日志调试普通信息
voidinfo(Objectmsg,Classcaller,StringmethodName)
为了提高效率,日志调试普通信息
booleanisWarnEnabled();
检查当前模块日志警告是否启用
voidwarn(Objectmsg,Throwablethrowable);
日志警告信息
voidwarn(Objectmsg,Throwablethrowable,Classcaller,StringmethodName)
为了提高效率,日志警告信息
voidwarn(Objectmsg);
voidwarn(Objectmsg,Classcaller,StringmethodName)
booleanisErrorEnabled();
检查当前模块日志错误报告是否启用
voiderror(Objectmsg,Throwablethrowable);
日志错误信息
voiderror(Objectmsg,Throwablethrowable,Classcaller,StringmethodName)
为了提高效率,日志错误信息
voiderror(Objectmsg);
voiderror(Objectmsg,Classcaller,StringmethodName)
voidputMDC(Stringkey,Objectvalue);
把一个由Key标志的信息放在线程上下文中,日志系统可以动态的日志这个信息,实现日志动态信息的目的(MDC)
voidremoveMDC(Stringkey);
从线程上下文中删除一个有key指定的动态信息(MDC)
voidresetMDC();
复位线程上下文中的所有Map信息(MDC)
voidpushNDC(msg=Object);
把一个信息压入线程上下文的一个堆栈(NDC),实现Log栈动态信息。
ObjectpopNDC();
把一个信息弹出线程上下文的一个堆栈(NDC),与pushNDC对应
voidsetNDCDepth(intdepth);
设置栈动态信息的日志深度,相当于调用了多次的pop
voidresetNDC();
复位栈动态信息
2.2动态日志API
动态日志是指日志系统所采用的模块在运行时刻随着程序的运行环境不断发生变化的的日志API,动态日志的API主类为Logger。
为了表达这个概念我们用下面的例子来说明问题:
一个通用算法程序:
importnc.bs.logging.Logger;
publicclassGeneralAlrig{
publicstaticvoidsayHello(){
Logger.debug("
hello,world"
}
finance模块程序:
publicclassFincanceModuleBSImpl{
publicstaticvoidmain(String[]args){
Logger.init("
fincance"
try{
GeneralAlrig.sayHello();
}finally{
Logger.reset();
}
他的输出为:
hello,world<
Supply模块程序:
publicclassSupplyModuleBSImpl{
publicstaticvoidmain(String[]args){
Supply"
可以看出该通用算法的日志模块在finance模块中为finace,在Supply模块中运行为Supply模块。
由于不同的模块输出位置、输出格式、输出的信息量等都可以配置,这对于针对单一模块的问题追踪具有一定的意义。
Logger的主要方法描述如下:
voidinit();
初始化Logger,根据调用堆栈找到模块,如果找不到,日志到匿名模块。
应用程序不需要调用该方法,一般只有平台性的系统调用该方法。
voidinit(Stringmodule);
初始化Logger,传入系统目前的模块,传入参数为空,同init无参数。
参数一般以类名作为参数。
。
voidreset();
从当前执行环境中把模块信息进行复位。
StringgetModule();
获取当前环境的模块名
voidinfo(Objectmsg,Classc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 日志 系统 使用 规范 doc
![提示](https://static.bdocx.com/images/bang_tan.gif)