ASP.Net寫系統日誌 Event Log

來源:互聯網
上載者:User

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);
        }
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.