2009-05-06 6 views
4

Ich möchte die Verbindungszeichenfolge des log4net AdoNetAppender verschlüsseln.Verschlüsseln Sie den vom log4net AdoNetAppender verwendeten ConnectionString

Kann dies ohne Verschlüsselung des gesamten Appenders durchgeführt werden?

Dion Olsthoorn blogged über die Einstellung der Verbindungszeichenfolge in Code, aber ich würde es vorziehen, es in einer Konfigurationsdatei zu tun, die Protokollierung gewidmet ist, da es eine andere Datenbank als der Rest der Anwendung verwendet.

Unten ist die Beispielconfig von http://logging.apache.org/log4net/release/sdk/log4net.Appender.AdoNetAppender.html

<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender"> 
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa" /> 
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" /> 
    <parameter> 
    <parameterName value="@log_date" /> 
    <dbType value="DateTime" /> 
    <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" /> 
    </parameter> 
    <parameter> 
    <parameterName value="@thread" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout" value="%thread" /> 
    </parameter> 
    <parameter> 
    <parameterName value="@log_level" /> 
    <dbType value="String" /> 
    <size value="50" /> 
    <layout type="log4net.Layout.PatternLayout" value="%level" /> 
    </parameter> 
    <parameter> 
    <parameterName value="@logger" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout" value="%logger" /> 
    </parameter> 
    <parameter> 
    <parameterName value="@message" /> 
    <dbType value="String" /> 
    <size value="4000" /> 
    <layout type="log4net.Layout.PatternLayout" value="%message" /> 
    </parameter> 
</appender> 

Antwort

2

Die aktuelle Quelle verfügt bereits über die Eigenschaft ConnectionStringName, die genau das tut, wonach Sie suchen.

Die ConnectionStringName-Eigenschaft wurde in revision 607748 eingeführt. Version 1.2.10 ist revision 395324, die im Vergleich dazu ziemlich alt ist.

Wenn Sie mit nicht freigegebenem Code arbeiten, können Sie die neueste Quelle erhalten und selbst kompilieren. Sie könnten wahrscheinlich auch nur die aktualisierte AdoNetAppender-Klasse erhalten, obwohl sie Abhängigkeiten zu anderen Aktualisierungen des log4net-Kerns haben könnte.

+0

Ich habe gerade eine Suche durch die Quelle für 1.2.10 und konnte ConnectionStringName nirgendwo finden. Wo soll ich hinschauen? Danke. –

+0

@Daniel - Die Antwort mit einigen Referenzen aktualisiert. –

2

Ich habe in der Lage, dies zu umgehen, indem von den log4net AdoNetAppender vererben und eine Eigenschaft namens connection hinzufügen.

Wenn dies festgelegt ist, wird die Verbindungszeichenfolge aus den Verbindungszeichenfolgen web.config gelesen und an den zugrunde liegenden AdoNetAppender übergeben.

Ich wäre immer noch scharf auf eine Lösung, die alle Logging-Konfiguration in einer einzigen Datei hält und trotzdem die Verbindungszeichenfolge verschlüsselt werden lässt.

Verwandte Themen