Enterprise Library Step By Step系列(七):日志和监测应用程序块——入门篇

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
写在前面:最近一段时间项目周期比较紧,所以这篇随笔出来的比较晚,希望喜欢本系列随笔的朋友谅解。上篇随笔写的也比较简单,我会抽时间补上的,先向大家道个歉^_^
一.日志和检测应用程序块概述:
Enterprise Library Logging and Instrumentation Application Block 版使开发人员可以在其应用程序中集成标准的日志和 监测 功能。应用程序可以使用日志和监测块在多个位置记录事件:
1 .事件日志(Event Log
2 .电子邮件(Email
3 .数据库(DataBase
4 .文本文件(TextFile
5 .消息队列(MSMQ
6 WMI
7 .用户自定义
二.日志和 监测 应用程序块在多个方面有助于应用程序的开发:
1 .它有助于在应用程序和整个企业中维护一致的日志和规范做法
2 .它使用一致的体系结构模型,使开发人员在学习过程中少走一些弯路。
3 .它提供了可用于解决常见的应用程序日志和规范问题的实现。
4 .它是可扩展的,并支持格式化程序和事件接收器的自定义实现。
三.几种常见的情况:
开发人员经常编写需要日志和 监测 功能的应用程序。通常,这些应用程序必须适当地格式化事件和记录事件,不论是在本地还是通过网络。在某些情况下,您可能需要对一台计算机上来自多个源的事件进行整理。
日志和 监测 应用程序块通过收集应用程序需要包含的多个最常见的日志和 监测 任务来简化应用程序的开发。每个任务都以一致的方式处理,并从特定的日志和 监测 提供程序中抽象应用程序代码。体系结构模型可让您通过更改配置来更改基础事件接收器和格式化程序,而无需更改应用程序代码。
四.日志项概述:
在记录日志时,都是创建一个日至项来承载记录的信息。每个日志项具有以下属性:
Message (必需项)
Cagegory (提供缺省值)
Priority (缺省值为-1
EventID (缺省值为-1
Severity (缺省值为Severity Unspecified
Title (缺省值为“”)
.几个重要概念:
Sink :日志记录的位置
Category :决定了你在程序中添加的日志写向何处,是通过配置来实现的。比如说我们有两个Category,第一个我们可以指定Sink为事件日志,第二个我们可以指定Sink为文本文件。
Formatter :格式器决定了日志记录的格式,通过配置实现,在进阶篇中我会重点去讲。
六.为应用程序添加日志:
为应用程序添加日志,步骤跟其他的应用程序块差不多,也是分为三步走:首先需要创建配置文件;在创建一个日志项对象,然后把它传给Logger.Write()方法。下面我们看一下具体的操作步骤:(同样我们认为您已经有了一个创建好的项目,并已经有了配置文件App.ConfigWeb.config
1 .运行配置工具后,选择 File | Open Application 打开应用程序的配置文件。
2 .在Application上右击并选择 New | Logging and Instrumentation Application Block

3 .日志和监测应用程序块默认的 Client Settings 定义了 in-process   distribution strategy LogginEnabledTrue

4
.日志和检测应用程序块默认的 Distributor Settings 定义了两个Category(包括GeneralTrace)。我们看到在General下的 Event Log Destination 里面它的Sink Event Log Sink 它的Formatter默认为 Text Formatter 我们可以通过右击Categorys选择 New | Category 来新建一个Category

]5
.选择 File | Save All 保存全部。
6 .最后别忘了拷贝目录。
" $(ProjectDir)\*.config "   " $(TargetDir) "
7 .在项目中添加对应用程序块的引用。
Microsoft.Practices.EnterpriseLibrary.Logging.dll
8 .在程序中引用
1 using  Microsoft.Practices.EnterpriseLibrary.Logging;
9 .添加日志:
在这之前,为程序的规范性和严谨,我们先定义两个枚举:
 1 /// <summary>
 2        /// 定义严重级别的枚举
 3        /// </summary>

 4          public   struct  Priority
 5          {
 6            public const int Lowest  = 0;
 7            public const int Low     = 1;
 8            public const int Normal  = 2;
 9            public const int High    = 3;
10            public const int Highest = 4;
11        }

12         
13          /// <summary>
14        /// 定义类别的枚举
15        /// </summary>

16          public   struct  Category
17          {
18            public const string General = "General";
19            public const string Trace   = "Trace";
20        }
添加日志,添加日志的工作全部都由Write方法来完成。
1 ///创建一个日志项
2             LogEntry log  =   new  LogEntry();
3             
4             log.Message  =   this .txt_LogMessage.Text;
5             log.Category  =  Category.General;
6             log.Priority  =  Priority.Normal;
7             
8              ///写入日志
9             Logger.Write(log);
10 .打开事件查看器,我们可以看到,在里面写入了一条日志信息:

11
.双击日志信息,可以查看详细的内容:
 
至此,一个完整的日志记录我们就做完了。入门篇就到这里,另外,大家可以看一下:
[url]http://terrylee.cnblogs.com/archive/2005/11/02/267063.html[/url]
在进阶篇里我会讲创建包含名-值对的字典,过滤事件,定制日志消息的格式,配置同步和异步等内容。











本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67607  ,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
12天前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
52 5
|
2月前
|
机器学习/深度学习 存储 监控
Elasticsearch 在日志分析中的应用
【9月更文第2天】随着数字化转型的推进,日志数据的重要性日益凸显。日志不仅记录了系统的运行状态,还提供了宝贵的洞察,帮助企业改进产品质量、优化用户体验以及加强安全防护。Elasticsearch 作为一个分布式搜索和分析引擎,因其出色的性能和灵活性,成为了日志分析领域的首选工具之一。本文将探讨如何使用 Elasticsearch 作为日志分析平台的核心组件,并详细介绍 ELK(Elasticsearch, Logstash, Kibana)栈的搭建和配置流程。
270 4
|
3月前
|
Java API 开发者
你的应用是不是只有service_stdout.log?
本文记录了logback-spring.xml文件不生效问题的整体排查思路。
|
14天前
|
存储 SQL 监控
|
14天前
|
自然语言处理 监控 数据可视化
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
46 2
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
3月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
57 0
|
15天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
128 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
231 3