Logger 日志记录

1。日记记录主要是当程序出现了BUG时候记录到数据库时候出现了问题。记录不了。就记录到Windows日志里面 具体用法如下:

需要引入(NuGet)EnterpriseLibrary.Common

public void LogGeneral(GeneralLogEntry logEntry)         {

var customLogFormatter = new GeneralLogFormatter("ld", "LogGeneral");             //使用代码设置

if (!EventLog.SourceExists("TCMSSix"))

    {

      EventLog.CreateEventSource("TCMSSix", "Application");                 //MessageBox.Show("创建TCMSSix源");

    }

    EventLog eventLog = new EventLog("Application", ".", "TCMSSix");             //用TraceListener的派生类来包装

    var formattedEventLogTraceListener = new FormattedEventLogTraceListener(eventLog, customLogFormatter);

    var consoleTraceListener = new ConsoleTraceListener();

    var config = new LoggingConfiguration();             //设置为异步用AddAsynchronousTraceListener

    config.AddLogSource("Trace", SourceLevels.All, true).AddTraceListener(formattedEventLogTraceListener);

    config.LogSources["Trace"].AddAsynchronousTraceListener(consoleTraceListener);

Logger.Reset();

    Logger.SetLogWriter(new LogWriter(config));

    Logger.Write(logEntry);

}

  将错误转化成需要写入Windows日志的字符串

internal class GeneralLogFormatter : ILogFormatter

{

     private readonly NameValueCollection _attributes;

public GeneralLogFormatter()

    {

}

public GeneralLogFormatter(NameValueCollection attributes)         {             _attributes = attributes;         }

public GeneralLogFormatter(string prefix, string ns)         {         _attributes = new NameValueCollection();      _attributes["prefix"] = prefix;         _attributes["ns"] = ns;         }

public string Format(LogEntry log)         {

    GeneralLogEntry logs = (GeneralLogEntry) log; //错误实体类

  string prefix = _attributes["prefix"];

    string ns = _attributes["ns"];

using (var sw = new StringWriter())

   {

    var w = new XmlTextWriter(sw);

    w.Formatting = Formatting.Indented;

    w.Indentation = 2;

    w.WriteStartDocument(true);

    w.WriteStartElement(prefix, "Log", ns);

    w.WriteAttributeString("ServerKey", ns, 1.ToString());

    w.WriteElementString("Processor", ns, logs.Processor);

    w.WriteElementString("InstalledMemory", ns, logs.InstalledMemory.ToString());

    w.WriteElementString("WindowsEdition", ns, logs.WindowsEdition);

    w.WriteElementString("SystemType", ns, logs.SystemType);

    w.WriteElementString("ComputerName", ns, logs.ComputerName);

    w.WriteElementString("MVirgilUserPkey", ns, logs.MVirgilUserPkey.ToString());

    .....//错误信息

    w.WriteEndElement();

    w.WriteEndDocument();

    return sw.ToString();

    }

  }

}

当记录时候需要创建一下

if (!EventLog.SourceExists("TCMSSix"))

{

   EventLog.CreateEventSource("TCMSSix", "Application");                 //MessageBox.Show("创建TCMSSix源");

 }

同时需要获取管理权限才能创建:

1.新建一个程序清单(.manifest)

2.

<security>

<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">

<!-- UAC 清单选项             如果要更改 Windows 用户帐户控制级别,请用以下节点之一替换             requestedExecutionLevel 节点。

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

   <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

指定 requestedExecutionLevel 节点将会禁用文件和注册表虚拟化。

如果要利用文件和注册表虚拟化实现向后

   兼容性,则删除 requestedExecutionLevel 节点。         -->

  <!--<requestedExecutionLevel level="asInvoker" uiAccess="false" />-->

<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>

</requestedPrivileges>

</security>

时间: 2024-11-05 13:40:35

Logger 日志记录的相关文章

剑指架构师系列-spring boot的logback日志记录

Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志对象,也可以定义日志类型.级别. 级别:ERROR.WARE.INFO.DEBUG和TRACE.没有FATAL,归纳到了ERROR级别里.ERROR.WARN and INFO level messages are logged by default. 在Spring Boot中,最好定义为logb

Android Logger日志系统

目录 目录 前言 运行时库层日志库liblog 源码分析 CC日志写入接口 Java日志写入接口 logcat工具分析 基础数据结构 前言 该篇文章是我的读书和实践笔记.参考的是<Android系统源代码情景分析>. 运行时库层日志库--liblog Android系统在运行时库层提供了一个用来和Logger日志驱动程序进行交互的日志库liblog.通过日志库liblog提供的接口,应用程序就可以方便地往Logger日志驱动程序中写入日志记录. 位于运行时库层的C/C++日志写入接口和位于应用

使用log4net无法将日志记录插入mysql数据库解决办法

写在前面 今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下.在使用过程中遇到一个很蛋疼的问题.最后解决了,郁闷了半天.这里做一下记录,以免再犯. 之前写个这方面的文章,关于配置信息,可参考我的这篇文章:Log4Net日志记录两种方式 解决办法 问题就出在我直接将log4net写入数据库的配置文件log4net.config直接复制过来在项目中使用了,当然是修改了连接字符串,提供程序等与mysql相关的配置.配

转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常保存到数据库中,所以就到网上搜了下专门的日志记录工具,一搜果然很多,比如:log4net,NLog,EntLib Logging等等,但是还是log4net名气最大,所以就下载下来试用了一番,果然很方便,其涵盖了所有常用的日志记录方式具体的可以看下表: AdoNetAppender 将日志记录到数据

【java】java自带的java.util.logging.Logger日志功能

偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logging.properties中 ②logging.properties日志文件内容如下: ############################################################ # Default Logging Configuration File # # You

Servlet过滤器——日志记录过滤器

1.概述 在实际的项目开发过程中,经常需要在项目运行时,记录并在控制台中输出运行时的日志信息,便于查看项目的运行状况.本实例将介绍如何应用过滤器实现日志记录.运行本实例,将在控制台中输出项目运行时的日志信息. 2.技术要点 本实例主要应用Apache的Log4j组件输出日志信息.该组件主要用于日志管理.Logger是Log4j的日志记录器,它是Log4j的核心组件. 在程序中可以使用Logger类的不同方法来输出各种级别的日志信息,Log4j会根据配置的当前日志级别决定输出哪些日志.对应各种级别

IOS异常日志记录与展现功能

在平常的APP开发过程中经常碰到程序遇到异常闪退的问题,通过日志可以把相关的详细错误信息进行记录,本实例要记录不管在哪个页面出错都要进行记录,这边使用到的日志记录插件CocoaLumberjack,以文本的形式记录错误信息,然后再去读取各个文本的内容进行展示:当然现在有很多第三方的插件比如友盟也已经集成错误记录的功能: 效果图如下: 1:封装DDLogger的类 MyFileLogger.h文件 #import <Foundation/Foundation.h> #import <Coc

log4j教程 11、日志记录到文件

要写日志信息到一个文件中,必须使用org.apache.log4j.FileAppender.有以下FileAppender的配置参数: FileAppender配置: 属性 描述 immediateFlush 标志的默认设置为true,这意味着输出流的文件被刷新,在每个追加操作 encoding 它可以使用任何字符编码.默认情况下是特定于平台的编码方案 threshold 这个 appender 阈值级别 Filename 日志文件的名称 fileAppend 默认设置为true,这意味着记录

log4j教程 7、日志记录级别

org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别. Level 描述 ALL 各级包括自定义级别 DEBUG 指定细粒度信息事件是最有用的应用程序调试 ERROR 错误事件可能仍然允许应用程序继续运行 FATAL 指定非常严重的错误事件,这可能导致应用程序中止 INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息 OFF 这是最高等级,为了关闭日志记录 TRACE 指定细粒度比DEBUG更低的信息事件 WARN 指定具有潜在危害的情