Laden...

Logging Application Block in Class Library

Erstellt von pkoeppe vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.253 Views
P
pkoeppe Themenstarter:in
319 Beiträge seit 2006
vor 16 Jahren
Logging Application Block in Class Library

Hallo zusammen,

ich versuche gerade den Logging Application Block in einer Class Library zu verwenden. Also ich habe zwei Projekte. Projekt 1 ist eine Class Library (TestLib) mit einer Class:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Logging;

namespace TestLib
{
  public class Class1
  {
    public Class1()
    {
      Logger.Write("Test");
    }
  }
}

Zu dieser habe ich ein app.config File erstellt:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </configSections>
    <loggingConfiguration name="Logging Application Block" tracingEnabled="true"
        defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
        <listeners>
            <add fileName="trace.log" header="----------------------------------------"
                footer="----------------------------------------" formatter="Text Formatter"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                name="FlatFile TraceListener" />
        </listeners>
        <formatters>
            <add template="{timestamp} - {message}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                name="Text Formatter" />
        </formatters>
        <categorySources>
            <add switchValue="All" name="General">
                <listeners>
                    <add name="FlatFile TraceListener" />
                </listeners>
            </add>
        </categorySources>
        <specialSources>
            <allEvents switchValue="All" name="All Events" />
            <notProcessed switchValue="All" name="Unprocessed Category" />
            <errors switchValue="All" name="Logging Errors &amp; Warnings" />
        </specialSources>
    </loggingConfiguration>
</configuration>

Projekt 2 ist eine Console Application, in der die Class Library referenziert wird:

using System;
using System.Collections.Generic;
using System.Text;
using TestLib;

namespace LoggingSampleExtended
{
  class Program
  {
    static void Main(string[] args)
    {
      Class1 class1 = new Class1();
    }
  }
}

Wenn ich das Ganze ausführe bekomme ich in der Class Library an der Stelle, wo ich in den Logger schreiben will, folgende Fehlermeldung angezeigt: "The configuration section for Logging cannot be found in the configuration source."

Hat jemand eine Idee was das Problem ist?

Gruß
pkoeppe

Wer nicht fragt, bleibt dumm.

D
500 Beiträge seit 2007
vor 16 Jahren

Hi!

Habe ich das richtig verstanden, dass die app.config, die der Library ist, welche die Klasse Class1 enthält? D.h. die app.config heißt dann in etwas "TestLib.config"?
Ich glaube, dass Du die Konfiguration in die app.config der ausführbaren Applikation(die Konsolen Applikation) packen mußt.

Gruß, DaMoe

A
254 Beiträge seit 2007
vor 16 Jahren

Hi,

Zwischenfrage:

Sieht die besagten Application Blocks für jeden nutzbar ? Oder müssen diese zusätzlich gekauft werden. Wie komm ich dran ?

Vielen Dank und Sorry für die Unterbrechung der Diskussion.

P
pkoeppe Themenstarter:in
319 Beiträge seit 2006
vor 16 Jahren

Hallo DaMoe80,

habe die app.config mal in die Console Application gepackt, dann funktionierts. Aber soll das echt der Weg sein? Was würde man dann z.B. machen, wenn man zwei DLLs hätte, die in unterschiedliche Files loggen sollen?

Gruß
pkoeppe

Wer nicht fragt, bleibt dumm.

P
pkoeppe Themenstarter:in
319 Beiträge seit 2006
vor 16 Jahren

@a957m: sind frei EntLib

Gruß
pkoeppe

Wer nicht fragt, bleibt dumm.

A
254 Beiträge seit 2007
vor 16 Jahren

Hi pkoeppe,

beim downloaden erscheint ein Login-Dialog, an dem ich nicht vorbei komm.

Ist vielleicht doch nicht frei ?

F
171 Beiträge seit 2006
vor 16 Jahren

Hallo a957m,

ist frei und kostenlos.

Mußt dich halt einmal Registrieren und kannst dann auf entsprechende Resourcen zugreifen.

Gruß falangkinjau