8

是否可以创建一种简单的方法来备份事件日志,例如批处理文件或简单的应用程序?我需要让它在客户的网站上工作,其中的参考是非专家用户。谢谢

4

4 回答 4

10

如果您使用的是 Windows 2008,请使用内置的 wevtutil 命令。例子:

wevtutil epl 应用程序 c:\temp\foo.evtx

否则,请从资源工具包中获取 dumpel.exe,或从http://technet.microsoft.com/en-us/sysinternals/bb897544.aspx获取 psloglist

于 2009-03-19T11:32:06.570 回答
4

使用 powershellexport-clixml及其 oneliner。

  get-eventlog -list | %{ get-eventlog $_.Log | export-clixml -path ($_.Log + ".xml") }
于 2010-10-13T10:27:17.097 回答
1

Microsoft 脚本中心有一些使用 VBScript 和 WMI备份和清除事件日志的示例代码。

Frank-Peter Schultze 的脚本站点有一些代码可以清除事件日志 ( http://www.fpschultze.de/uploads/clrevt.vbs.txt ),您可以将其修改为备份或备份然后清除。

如果您有权访问服务器,则可以通过右键单击日志并使用“将日志文件另存为...”命令从事件查看器进行备份。您可以保存到二进制、制表符分隔或逗号分隔的文件。

于 2009-03-24T10:06:51.530 回答
1

最后我用网上找到的这个方法做了一个小winapp:

public void DoBackup(string sLogName)
{
    string sBackup = sLogName;  // could be for example "Application"
    EventLog log = new EventLog();
    log.Source = sBackup;

    var query = from EventLogEntry entry in log.Entries
                orderby entry.TimeGenerated descending
                select entry;

    string sBackupName = sBackup+"Log";
    var xml = new XDocument(
        new XElement(sBackupName,
            from EventLogEntry entry in log.Entries
            orderby entry.TimeGenerated descending
            select new XElement("Log",
              new XElement("Message", entry.Message),
              new XElement("TimeGenerated", entry.TimeGenerated),
              new XElement("Source", entry.Source),
              new XElement("EntryType", entry.EntryType.ToString())
            )
          )
        );

    DateTime oggi = DateTime.Now;
    string sToday = DateTime.Now.ToString("yyyyMMdd_hhmmss");
    string path = String.Format("{0}_{1}.xml", sBackupName, sToday);
    xml.Save(Path.Combine(Environment.CurrentDirectory, path));
}

这是源链接

它简直太棒了

于 2009-03-25T14:32:27.203 回答