天天看點

ASP.Net寫系統日志 Event Log

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;

    case EVENT.EVENT_INFORMATION:

     Eventtype = EventLogEntryType.Information;

    case EVENT.EVENT_SUCCESSAUDIT:

     Eventtype = EventLogEntryType.SuccessAudit;

    case EVENT.EVENT_WARNING:

     Eventtype = EventLogEntryType.Warning;

   }

   // 日志資訊的拼合

   outputMessage = MakeMessage( loginID, screenID, targetLevelString, message );

   // 寫日志

   Logging( Eventtype, outputMessage.ToString() );

  /// 向日志管理器寫日志

  /// <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;

  /// 日志最終拼合

  /// <param name="levelString">錯誤級别</param>

  /// <returns>輸出的日志資訊</returns>

  private static StringBuilder MakeMessage (

   string levelString,

   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;

        }

        /// 消息事件源名稱

        public string EventSourceName

            set { eventSourceName = value; }

        /// 消息事件類型

        public EventLogEntryType EventLogType

            set { eventLogType = value; }

        /// 寫入系統日志

        /// <param name="message">事件内容</param>

        public void LogEvent(string message)

            if (!EventLog.SourceExists(eventSourceName))

            {

                EventLog.CreateEventSource(eventSourceName, "Application");

            }

            EventLog.WriteEntry(eventSourceName, message, EventLogEntryType.Error);

版權

作者:靈動生活 郝憲玮

如果你認為此文章有用,請點選底端的【推薦】讓其他人也了解此文章,

ASP.Net寫系統日志 Event Log

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀