none
如何自動清除事件檢視器內的應用程式 RRS feed

  • 問題

  • 因為本公司會寫一些LOG到應用程式內
    就會造成我們公司在讀取資料時的問題
    當LOG產生很多了之後 就要手動來清除
    所以想要請教 有沒有方式可以讓它自動清除
    或是可以使用排程來做呢?
    2009年7月16日 上午 07:11

解答

  • 可以參考下面官方網站

    Back Up and Clear an Event Log
    http://www.microsoft.com/technet/scriptcenter/scripts/logs/eventlog/default.mspx?mfr=true

    做法是使用Script的方式去備份並清除Eventlog(如下)

    --------------------------------------------------------------------------------------------
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate,(Backup)}!\\" & _
            strComputer & "\root\cimv2")

    Set colLogFiles = objWMIService.ExecQuery _
        ("Select * from Win32_NTEventLogFile where LogFileName='Application'")

    For Each objLogfile in colLogFiles
        errBackupLog = objLogFile.BackupEventLog("c:\scripts\application.evt")
        If errBackupLog <> 0 Then       
            Wscript.Echo "The Application event log could not be backed up."
        Else
            objLogFile.ClearEventLog()
        End If
    Next
    --------------------------------------------------------------------------------------------

    如果不需要備份的話..應該式改成下面這樣就可以
    你可以試試看..以下是我想到的..不知道可不可以work..對Script不太熟...@@

    --------------------------------------------------------------------------------------------
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate,(Backup)}!\\" & _
            strComputer & "\root\cimv2")

    Set colLogFiles = objWMIService.ExecQuery _
        ("Select * from Win32_NTEventLogFile where LogFileName='Application'")

    objLogFile.ClearEventLog()

    --------------------------------------------------------------------------------------------


    假設Script確定可以執行的話..就透過排程的方式去讓他定時run一次囉


    微軟技術支援服務
    • 已提議為解答 Vincent Lin 2009年7月21日 上午 05:14
    • 已標示為解答 Vincent Lin 2009年7月22日 上午 02:31
    2009年7月17日 上午 02:47
  • 這是我同事參考您寫的在來做修改
    已經可以自動來刪掉了

    存成副檔名vbs
    設定排程執行即可
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate,(Backup)}!\\" & _
            strComputer & "\root\cimv2")
     
    dim mylogs(3)
    mylogs(1) = "application"
    mylogs(2) = "system"
    mylogs(3) = "security"
    for Each logs in mylogs
    Set colLogFiles = objWMIService.ExecQuery _
        ("Select * from Win32_NTEventLogFile where LogFileName='"& logs &"'")
        for Each objLogfile in colLogFiles
          objLogfile.ClearEventLog()
        Next
    Next

    • 已標示為解答 cavin chin 2009年7月28日 上午 04:09
    • 已編輯 Vincent Lin 2009年7月28日 上午 05:05 更改字的大小
    2009年7月28日 上午 04:06

所有回覆

  • 可以參考下面官方網站

    Back Up and Clear an Event Log
    http://www.microsoft.com/technet/scriptcenter/scripts/logs/eventlog/default.mspx?mfr=true

    做法是使用Script的方式去備份並清除Eventlog(如下)

    --------------------------------------------------------------------------------------------
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate,(Backup)}!\\" & _
            strComputer & "\root\cimv2")

    Set colLogFiles = objWMIService.ExecQuery _
        ("Select * from Win32_NTEventLogFile where LogFileName='Application'")

    For Each objLogfile in colLogFiles
        errBackupLog = objLogFile.BackupEventLog("c:\scripts\application.evt")
        If errBackupLog <> 0 Then       
            Wscript.Echo "The Application event log could not be backed up."
        Else
            objLogFile.ClearEventLog()
        End If
    Next
    --------------------------------------------------------------------------------------------

    如果不需要備份的話..應該式改成下面這樣就可以
    你可以試試看..以下是我想到的..不知道可不可以work..對Script不太熟...@@

    --------------------------------------------------------------------------------------------
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate,(Backup)}!\\" & _
            strComputer & "\root\cimv2")

    Set colLogFiles = objWMIService.ExecQuery _
        ("Select * from Win32_NTEventLogFile where LogFileName='Application'")

    objLogFile.ClearEventLog()

    --------------------------------------------------------------------------------------------


    假設Script確定可以執行的話..就透過排程的方式去讓他定時run一次囉


    微軟技術支援服務
    • 已提議為解答 Vincent Lin 2009年7月21日 上午 05:14
    • 已標示為解答 Vincent Lin 2009年7月22日 上午 02:31
    2009年7月17日 上午 02:47
  • 這是我同事參考您寫的在來做修改
    已經可以自動來刪掉了

    存成副檔名vbs
    設定排程執行即可
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate,(Backup)}!\\" & _
            strComputer & "\root\cimv2")
     
    dim mylogs(3)
    mylogs(1) = "application"
    mylogs(2) = "system"
    mylogs(3) = "security"
    for Each logs in mylogs
    Set colLogFiles = objWMIService.ExecQuery _
        ("Select * from Win32_NTEventLogFile where LogFileName='"& logs &"'")
        for Each objLogfile in colLogFiles
          objLogfile.ClearEventLog()
        Next
    Next

    • 已標示為解答 cavin chin 2009年7月28日 上午 04:09
    • 已編輯 Vincent Lin 2009年7月28日 上午 05:05 更改字的大小
    2009年7月28日 上午 04:06