zoukankan      html  css  js  c++  java
  • 【转】在ASP.Net中写系统日志

    ASP.Net默认情况下,是没有写系统日志的权限的。要在ASP.Net中写系统日志,首先我们要先有其权限。我们可以通过设置或修改注册表的权限来解决。

    方法1:“开始->运行”,输入命令,“regedt32”,找到“System->CurrentControlSet->Services->Eventlog”,选择“安全->权限->添加”,然后找到本机的“AspNet”用户,加进来并且给读取权限就好了,加进来后目录中会多一个“aspnet_wp account”

    方法2:在注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\EventLog增加User的完全操纵权限

    using System;
    using System.Diagnostics;
    using System.Text;

    namespace CorePlus.Framework.Utility
    {
     /// <summary>
     /// 写日志的CLASS
     /// </summary>
     public class LogUtility
     {
      public enum EVENT
      {
       /// <summary>重大错误</summary>
       EVENT_ERROR,
       /// <summary>操作失败</summary>
       EVENT_FAILUREAUDIT,
       /// <summary>一般信息</summary>
       EVENT_INFORMATION,
       /// <summary>有效的,成功的操作</summary>
       EVENT_SUCCESSAUDIT,
       /// <summary>警告</summary>
       EVENT_WARNING,
      }

      private static TextWriterTraceListener listner = null;

      /// <summary>
      /// 构造函数
      /// </summary>
      public LogUtility () {}

      /// <param name="loginID">登录ID</param>
      /// <param name="screenID">画面ID</param>
      /// <param name="level">警告级别</param>
      /// <param name="message">日志信息</param>
      public static void Logging (
       string loginID,
       string screenID,
       EVENT level,
       string message )
      {
       // 变量定义
       StringBuilder  outputMessage = null; // 输出的信息
       string    targetLevelString = null;
       EventLogEntryType Eventtype = new EventLogEntryType();

       switch (level)
       {
        case EVENT.EVENT_ERROR:
         Eventtype = EventLogEntryType.Error;
         break;

        case EVENT.EVENT_FAILUREAUDIT:
         Eventtype = EventLogEntryType.FailureAudit;
         break;

        case EVENT.EVENT_INFORMATION:
         Eventtype = EventLogEntryType.Information;
         break;

        case EVENT.EVENT_SUCCESSAUDIT:
         Eventtype = EventLogEntryType.SuccessAudit;
         break;

        case EVENT.EVENT_WARNING:
         Eventtype = EventLogEntryType.Warning;
         break;
       }

       // 日志信息的拼合
       outputMessage = MakeMessage( loginID, screenID, targetLevelString, message );

       // 写日志
       Logging( Eventtype, outputMessage.ToString() );
      }

      /// <summary>
      /// 向日志管理器写日志
      /// </summary>
      /// <param name="level">错误级别</param>
      /// <param name="message">输出的信息</param>
      private static void Logging ( EventLogEntryType level, string message )
      {
       // 变量定义
       string  logName  = null; // 日志名
       string  machineName = null; // 机器名
       string  sourceName = null; // SourceName
       EventLog eventLog = null; // EventLog

       logName  = "Eventlog2";  // 日志名
       machineName = "."; // 机器名
       sourceName = "Eventlog2"; // SourceName

       eventLog = new EventLog( logName, machineName, sourceName );
       eventLog.WriteEntry( message,level );
       eventLog = null;
      }

      /// <summary>
      /// 日志最终拼合
      /// </summary>
      /// <param name="loginID">登录ID</param>
      /// <param name="screenID">画面ID</param>
      /// <param name="levelString">错误级别</param>
      /// <param name="message">日志信息</param>
      /// <returns>输出的日志信息</returns>
      private static StringBuilder MakeMessage (
       string loginID,
       string screenID,
       string levelString,
       string message )
      {
       // 变量定义
       StringBuilder retMessage = new StringBuilder();

       retMessage.Append( "【登录ID】" );
       retMessage.Append( loginID );
       retMessage.Append( "\n【画面ID】" );
       retMessage.Append( screenID );
       retMessage.Append( "\n【错误级别】" );
       retMessage.Append( levelString );
       retMessage.Append( "\n【错误信息】\n" );
       retMessage.Append( message );

       return retMessage;
        }
      }
    }

    // 在FORM中输出日志
      private void button1_Click(object sender, System.EventArgs e)
      {
       LogUtility.Logging( "bbbbbb","22222222",LogUtility.EVENT.EVENT_ERROR,"3333333" );
      }

    运行完程序后打开日志管理器看看~~~~~~~~~怎么样?不错吧,呵呵.

    另一个方法

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Diagnostics;

    namespace Log
    {
        class LogWirter
        {
            /// <summary>
            /// 事件源名称
            /// </summary>
            private string eventSourceName;
            EventLogEntryType eventLogType;
            public LogWirter()
            {
                eventSourceName = "test";
                eventLogType = EventLogEntryType.Error;
            }

            /// <summary>
            /// 消息事件源名称
            /// </summary>
            public string EventSourceName
            {
                set { eventSourceName = value; }
            }

            /// <summary>
            /// 消息事件类型
            /// </summary>
            public EventLogEntryType EventLogType
            {
                set { eventLogType = value; }
            }

            /// <summary>
            /// 写入系统日志
            /// </summary>
            /// <param name="message">事件内容</param>
            public void LogEvent(string message)
            {
                if (!EventLog.SourceExists(eventSourceName))
                {
                    EventLog.CreateEventSource(eventSourceName, "Application");
                }
                EventLog.WriteEntry(eventSourceName, message, EventLogEntryType.Error);
            }
        }
    }
  • 相关阅读:
    【模板】Sparse-Table
    UVa 11235 Frequent values
    【模板】树状数组
    UVa 1428 Ping pong
    数学技巧
    UVa 11300 Spreading the Wealth
    UVa 11729 Commando War
    UVa 11292 Dragon of Loowater
    POJ 3627 Bookshelf
    POJ 1056 IMMEDIATE DECODABILITY
  • 原文地址:https://www.cnblogs.com/zhangshufeng/p/2167020.html
Copyright © 2011-2022 走看看