您的位置:首页 > 大数据 > 人工智能

深入了解ApusicAS服务器配置系列之——AAS日志服务配置

2011-11-14 19:48 357 查看
 日志可以记录服务器的很多内容,因此,通过日志服务可以详细记录服务器运行中可能出现的各种问题,从而为解决问题提供重要依据,另外,管理员通过日志也可以随时了解服务器的运行状态。因此,配置一个正确的日志服务是以后服务器维护的重要基础。
AAS 内置的日志服务其实主要包含两部分:一个是通过logging.xml文件配置的服务器全局的日志配置以及某些应用可能会用到的日志服务,另外一个是 AAS的com.apusic.web.WebService服务专用的客户端访问日志服务(默认情况下,此日志是关闭的,默认的存储路径为logs/access.log)。

对于前者的系统日志服务,首先介绍一下背景知识。
Apusic应用服务器日志子系统由以下三个部分组成:

接受日志信息输入的日志记录器(Logger)对象;
输出日志纪录(LogRecord)到指定目标(如控制台,日志文件)的日志输出(Handler)对象;
对日志记录器(Logger)和日志输出(Handler)进行管理的日志管理器(LogManager)对象;

AAS(截止到7.0版本)在安装之后,默认会创建三个日志服务相关的对象,一个是全局应用都可以使用的匿名全局Logger对象;一个是全局的控制台日志输出对象(ConsoleHandler);再就是全局的文件日志输出对象(FileHandler)。如果应用不指定日志记录器对象的名字,则系统会默认将日志相关的处理交由默认的匿名Logger对象处理。
AAS内置的日志处理过程:
日志子系统初始化一个全局的日志管理器(LogManager)对象,日志管理器对象(LogManager)从域主目录中的config目录下的logging.xml 文件中读取初始化配置。生成全局匿名日志记录器(Global Anonymous Logger)对象,根据配置文件中对日志记录器(Logger)的定义生成相应的日志记录器(Logger)对象; 根据配置文件中对日志输出(Handler)的定义生成相应的全局日志输出(Handler)对象;
其它子系统向特定的日志记录器(Logger)对象输出日志信息; 客户应用向应用指定的日志记录器(Logger)对象输出日志信息,如未指定,则输出到全局匿名日志记录器(Global Anonymous Logger)对象;
日志记录器(Logger)对象将为接受到的每个日志信息分配一个描述它的日志记录对象(LogRecord),然后将此日志记录对象发送给所有的全局日志输出对象(Handler);
日志输出(Handler)对象将日志记录(LogRecord)格式化输出到控制台,文件,发送到网络日志服务或发送到操作系统日志;

综上,默认情况下,日志的输出有两个目的地:一个是控制台,一个是%APUSIC_DOMAIN_APP_HOME%下的logs/*.log文件;并且默认两者是同时输出的。日志在输出过程中,首先经过Logger的处理,将不必要的信息过滤掉一层;然后,经过Hander的处理,再次按照日志级别进行过滤。需要注意的是,Logger与Handler的日志级别可能并不相同,因此,这种双重的过滤机制可以最大限度保留必要的日志信息。
当然,可以把其中的一个关闭,甚至两个全都关闭,不过关闭的前提是整个环境足够稳定,建议自然是可以把控制台的输出关闭,另外的文件输出控制在 WARNING及以上级别(警告、错误、致命错误)的日志信息,依然是要输出的,以便于纠错与维护。因为,控制台几乎只有在测试与上线初期问题较多时查看,后期稳定之后,几乎不会有人再关注控制台的信息,而且往控制台输出信息依然是会消耗一部分性能的。
日常部署过程中,经常会出现客户要求系统自动按照日期划分的情况。AAS内置一个com.apusic.logging.DateFileHandler的文件日志输出对象,可以将输出的文件自动按照日期划分。当然,日志输出可以进行客户化的扩展,但是,需要注意的是:必须保证所有的日志输出(Handler)类位于系统的类路径中。
在启动时,Apusic AS初始化一个全局的日志管理器(LogManager)对象,此全局日志管理器(LogManager)对象用于维护日志记录器(Logger)和日志服务所共享的状态,并且在整个服务器的运行过程中是唯一且固定的;管理日志记录器(Logger)对象的分级命名空间,所有已命名的日志记录器 (Logger)对象都存储于此命名空间之中;管理全局日志输出(Handler)对象列表。
日志管理器从位于Apusic应用服务器安装目录中config目录下的配置文件logging.xml读取其初始化配置。
logging.xml配置文件中可使用handler标记装载某个日志输出类文件并注册一个全局日志输出(Handler)对象。每个 handler标记可以有零个或多个属性(property)声明,这些属性将通过JavaBean的内省(introspection)机制在初始化时对此Handler对象进行设置。
对于在logging.xml中声明的日志记录器(Logger)对象,可以按照句点分隔的命名方式进行命名,日志管理器(LogManager) 将把这些对象按照其命名组织到一个分级的命名空间中,例如,名字为a.b.c的日志记录器(Logger)对象从属于名字为a.b的日志记录器 (Logger)对象,而名字为a.c的日志记录器(Logger)对象与名字为a.b的日志记录器(Logger)对象是同级的关系。
如果客户要求在系统日志中包含客户端的IP地址,则可以在AAS启动时,加上AAS特有的JVM参数-Dapusic.log.clientIP=true。另外一种方式只能在AAS的Web服务里面生效,就是在apusic.conf文件中的<SERVICE CLASS="com.apusic.web.WebService">中,配置其LogFormat属性中加入“%a”参数。

对于Web服务专用的日志服务,更多的是用于记录Web服务访问记录的信息,默认情况下,此日志服务是关闭的。并且在一般情况下,此日志服务使用的情况比较少。

附:Apusic AS日志系统支持六个日志级别

序号级别描述
1DEBUG调试级别日志信息
2INFO报告类信息
3NOTICE常规但重要的信息
4WARNING警告类信息
5ERROR错误类信息
6FATAL重大情况信息(最高级别)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐