2

EventSource を使用して、EnterpriseLibrary.SemanticLogging によってイベントを SQL データベースに記録しています。

以下はテスト方法です:

    [TestMethod]
    public void Log_Test()
    {
        var eventListener = new ObservableEventListener();

        var sqlListener = SqlDatabaseLog.CreateListener("Instance", CloudConfigurationManager.GetSetting("ConnectionStringTrace"), "Traces");
        eventListener.EnableEvents(ApplicationEventSource.Log, EventLevel.LogAlways, Keywords.All);

        ApplicationEventSource.Log.ComponentNotLoaded("Milind", "Cheeta", "Core");

また、ApplicationEventSource クラスは、次のメソッドで EventSource から派生します。

        [Event(2,
        Keywords = Keywords.Component,
        Message = "Component: {2} not successfully loaded for user: {0} on machine: {1}",
        Task = Tasks.Load,
        Opcode = EventOpcode.Start,
        Level = EventLevel.Error)]
    public void ComponentNotLoaded(string userName, string machineName, string componentName)
    {
        WriteEvent(2, userName, machineName, componentName);
    }

WriteEvent 中にエラーは発生していませんが、テーブルTraceには何も記録されていません

4

1 に答える 1

0

完全な ApplicationEventSource クラスを投稿してください。

次のようにメソッドを変更すると:

public void ComponentNotLoaded(string userName, string machineName, string componentName)
{
    if(IsEnabled())
        WriteEvent(2, userName, machineName, componentName);
}

WriteEvent は呼び出されますか? そうでない場合は、構造に問題があります。Event Source Analyzer を使用して EventSource クラスを検証してみてください。

https://msdn.microsoft.com/en-us/library/dn774985(v=pandp.20).aspx#_Checking_an_eventを参照してください。

また、データベース シンクをセットアップする通常の手順は次のようになります。

eventListener.LogToSqlDatabase(
                Environment.MachineName,
                sqlConnectionString,
            );
于 2016-05-02T13:40:49.033 に答える