4

カスタム (非 Tridion) データベースからコンテンツをレンダリングするユーザー コントロールがあります。このカスタム データベースの接続文字列が正しくないため、コードが接続しようとすると SqlException が発生します。

私のコードは現在:

var logger = 
    Tridion.ContentDelivery.Web.Utilities
        .LoggerFactory.GetLogger(this.GetType().ToString());
try
{
    /* make a database connection - failing with SqlException */ 
}
catch (SqlException e)
{
    logger.Error("Could not connect to database: " + e.ToString());
}

私の \bin\config\logback.xml ファイルには次のものが含まれています。

<property name="log.pattern" value="%date %-5level %logger{0} - %message%n"/>
<property name="log.history" value="7"/>
<property name="log.folder" value="c:/tridion/log"/>
<property name="log.level" value="DEBUG"/>
...
<appender name="rollingCoreLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.folder}/cd_core.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>${log.history}</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>${log.pattern}</pattern>
    </encoder>
    <prudent>true</prudent>
</appender>
...
<root level="warn">
    <appender-ref ref="rollingCoreLog"/>
</root>

C:\Tridion\log にログのスタックがありますが、最近変更されたログは 20 分前に変更されたものであり、ログ メッセージ テキストは含まれていません (メモ帳で「データベース」を検索したところです)。

ログ出力がログに送信されないのはなぜですか?

4

1 に答える 1

3

次の 2 つのオプションがあります。

  • ルート ロギングを「DEBUG」に定義しますが、これには、Tridion が使用しているすべてのサード パーティ ライブラリから大量のロギングが可能になるという欠点があります。スニペットは次のとおりです。<root level="DEBUG"> <appender-ref ref="rollingCoreLog"/> </root>

  • Tridion .NET ロギングも含める特別なアペンダーを定義します。<logger name="Tridion.ContentDelivery" level="${log.level}"><appender-ref ref="rollingCoreLog"/></logger>

2 番目のケースでは、ロガーを Tridion.ContentDelivery の下の名前空間にバインドする必要があることに注意してください。次に例を示します。

var logger = Tridion.ContentDelivery.Web.Utilities.LoggerFactory.GetLogger("Tridion.ContentDelivery.MyNamespace.MyClass");

お役に立てれば。

PS: 質問に答えるには: アペンダーがなく、ルート ログが WARN に設定されているためです。デフォルトでは、logback.xml には「com.tridion」のアペンダーのみが含まれていますが、の出力はthis.getType().ToString()その文字列で始まらないと思います。

于 2013-01-17T09:29:22.270 に答える