ASP.NET企业开发框架IsLine FrameWork系列之七--AppLogProvider日志框架(上)

简介:

   日志与异常

    部署系统以后,管理员需要有一套强大的日志系统来诊断和修复配置上的问题,这就需要一套通过配置就可以变更日志记录的方式。经验表明,日志模块往往是软件开发周期中的重要组成部分,Aicken曾用过一段时间的Log4Net,Log4Net是个很不错的日志框架,但是有时候仍然觉得有些不顺手,例如,需要用不同类型的日志记录不同的类、方法的行为和不同的业务行为,有时需要在系统运行期,改变某个业务日志的记录介质或是否记录等等,遇到这些因素Log4Net可能需要修改代码重新编译,而IsLine FrameWork的AppLogProvider模块可以只修改配置文件就可满足需求,它具有以下几个优点:

  1. 它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;
  2. 一旦在程序中加入了Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。
  3. 不同的日志信息可以输出到不同的地方(控制台、文件、数据库等)以备以后研究之用。

  这两个Provider就是根据这些需求开发的,它们分别负责记录系统中的运行日志与运行时异常,但是IsLine框架的AppLogProvider比Log4Net更加灵活、易用,使用这个模块的优点如下:

  1. 由Render组件来定义输出介质。正如名字所示,这些组件把它们附加到日志组件上并将输出传递到输出流中,可以把一个Appender组件附加到多个日志对象上。
  2. 灵活控制日志等级,在部署系统后,通过等级控制,快捷切换是否记录某个业务块的信息。
  3. 通过日志缓存的设定,使系统集中资源的收集日志和异常信息,当达到一定的阀值后,高效的写入存储介质。
  4. 通过配置文件,可以快捷改变日志记录介质(文件、数据库),记录所用到的技术,不需更改程序文件,只需改变配置文件。
  5. 使用者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能。同时,通过外部配置文件,用户可以不用重新编译程序就能改变应用的日志行为,使得用户可以根据情况灵活地选择要记录的信息。

    在这两个Provider中,有一个很重要的概念,就是“Render ”,Render是日志异常模块的配置节点,它决定了系统日志记录的目标、记录方式、路径等信息,这些信息可以通过配置得出,它可以是数据库、文本文件、XML文件,甚至是电视机,不过除了数据库、文件这些内置Render外,其他记录介质需要继承相关接口,然后扩展实现。

    该Provider目前内置支持SQL SERVER、ORACLE、文本文件的记录方式,并可使用sql语句或存储过程为记录手段。

    Render介绍:

    这是一个Render实例

 

复制代码

  
  
<OracleUsingSPRender>

<AppenderStyle>Oracle</AppenderStyle>

<AppenderType>StoredProcedure</AppenderType>

<AppenderInf>IsLine.Data.Configuration.OracleConnectString</AppenderInf>

<AppenderContent>SP_ADD_ILFWLOG.ADD_ILFWLOG</AppenderContent>

<LayoutInf></LayoutInf>

<Level>Debug</Level>

</OracleUsingSPRender>

复制代码

 

 

<OracleUsingSPRender></OracleUsingSPRender>为一个Render节点,括号中的为Render的名字,默认的Render有:

OracleUsingSPRender

使用Oracle数据库的存储过程记录日志

OracleUsingTextRender

使用Oracle数据库的sql语句记录日志

SQLServerUsingSPRender

使用SQL SERVER数据库的存储过程记录日志

SQLServerUsingTextRender

使用SQL SERVER数据库的sql语句记录日志

FileRender

将日志记录至文本文件

MailRender

将日志发送给收件人

    Render包括四部分:附加方式(AppenderStyle), 附加类型(AppenderType), 附加信息(AppenderInf)、 附加内容(AppenderContent)、等级(Level).

    其中“AppenderStyle”指明了日志记录方式,可以是数据库、文件等,这是一个枚举类型;

    “AppenderType”指明依附形式,可以是文件、存储过程名字等。

    “AppenderContent”指明记录内容。当AppenderStyle指明使用数据库为日志记录介质、“AppenderType”指明存储过程时,“<AppenderContent>”为存储过程名字;“AppenderType”指明sql语句时,“<AppenderContent>”为具体sql语句。

    “Level”表示记录的等级,该等级小于全局日志记录等级时,该日志实例将不工作;全局日志记录等级在web.config中配置,下面会有介绍。

    “AppenderInf”表示记录路径或使用的扩展程序;

    在ILFW框架里,通过设置配置文件,每个日志对象都被分配了一个日志优先级别,即Level节点中的值,同时配置文件中还有一个表示全局级别的键值串,当Level节点中的枚举值小于全局级别时,该日志对象将不会记录。

    Level级别信息如下:

Level名称

解释

优先级

All

将记录所有实例的信息

最低

Info

 

 

Warn

 

 

Debug

 

 

Error

 

 

Fatal

 

 

Off

不会记录任何实例的信息

最高

    Web.config中全局级别配置如下:

    <add key="IsLine.AppLog.Configuration.Level" value="Debug"/>

    大于等于此级别的Render将被记录,Off > Fatal > Error > Debug > Warn > Info > All


图1 Render模型

IsLine.AppLog.AppLogProvider命名空间

该命名空间共有9个类库,包括配置、功能和枚举三部分,以下是它的基本类关系:


图2 AppLogProvider基本类关系

 


图3 AppLogProvider基本类关系

 

图4 ExceptionProcessProvider基本类关系

 

该命名空间提供了上册逻辑将系统行为记录到介质的能力,上层业务通过对WriteLog()方法的调用,即可完成对当前断点行为的记录。

在调用该方法前,需要预先获得日志实体,并且将该实体做为参数传递给上述方法,日志实体中规范了记录内容,日志模型如下:

 

图5日志模型

    该模型定义了6个日志字段,分别与数据库或其他Appender对应,当AppLogProvider获得日志实体后,便会加载Render模块,对基本日志信息进行渲染。

Render通过对记录介质、依附方式、依附格式、报告等级等配置信息的加载,从而完成日志的写入工作。


本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2009/12/25/1632197.html,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4853 32
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
Rust 前端开发 JavaScript
Tauri 开发实践 — Tauri 日志记录功能开发
本文介绍了如何为 Tauri 应用配置日志记录。Tauri 是一个利用 Web 技术构建桌面应用的框架。文章详细说明了如何在 Rust 和 JavaScript 代码中设置和集成日志记录,并控制日志输出。通过添加 `log` crate 和 Tauri 日志插件,可以轻松实现多平台日志记录,包括控制台输出、Webview 控制台和日志文件。文章还展示了如何调整日志级别以优化输出内容。配置完成后,日志记录功能将显著提升开发体验和程序稳定性。
1083 1
Tauri 开发实践 — Tauri 日志记录功能开发
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
1621 3
|
前端开发 JavaScript 程序员
鸿蒙开发:console日志输出
针对初学者而言,大家只需要掌握住日志打印即可,等到了鸿蒙应用开发的时候,还有一个鸿蒙原生的打印工具HiLog,到时,我们也会详细的去讲述,也会针对HiLog,封装一个通用的工具类。
504 11
鸿蒙开发:console日志输出
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
274 13
|
开发框架 运维 监控
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
642 5
|
人工智能 自动驾驶 机器人
D1net阅闻|国务院国资委部署深化中央企业“AI+”专项行动
D1net阅闻|国务院国资委部署深化中央企业“AI+”专项行动
|
监控 开发者
鸿蒙5.0版开发:使用HiLog打印日志(ArkTS)
在HarmonyOS 5.0中,HiLog是系统提供的日志系统,支持DEBUG、INFO、WARN、ERROR、FATAL五种日志级别。本文介绍如何在ArkTS中使用HiLog打印日志,并提供示例代码。通过合理使用HiLog,开发者可以更好地调试和监控应用。
1053 16
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
970 1
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
368 1