为什么不是';这段代码在我的Tridion内容交付服务器上写入日志输出吗?

为什么不是';这段代码在我的Tridion内容交付服务器上写入日志输出吗?,tridion,tridion-2011,tridion-content-delivery,Tridion,Tridion 2011,Tridion Content Delivery,我有一个从自定义(非Tridion)数据库呈现内容的用户控件。此自定义数据库的连接字符串不正确,因此当代码尝试连接时,我得到一个SqlException 我的代码当前为: var logger = Tridion.ContentDelivery.Web.Utilities .LoggerFactory.GetLogger(this.GetType().ToString()); try { /* make a database connection - faili

我有一个从自定义(非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());
}
My\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>

...
${log.folder}/cd_core.%d{yyyy-MM-dd}.log
${log.history}
${log.pattern}
真的
...
C:\Tridion\log中有一堆日志,但最近更改的一个日志是20分钟前修改的,不包含我的日志消息文本(我只是在记事本中搜索了“数据库”)

为什么我的日志输出没有发送到日志?

您有两个选项:

  • 您将根日志记录定义为“DEBUG”,但这有一个缺点,即允许Tridion使用的所有第三方库进行大量日志记录。下面是代码片段:

  • 您定义了一个特殊的appender,其中还包括Tridion.NET日志:

注意,在第二种情况下,需要将记录器绑定到Tridion.ContentDelivery下的命名空间。以下是一个例子:

var记录器= Tridion.ContentDelivery.Web.Utilities.LoggerFactory.GetLogger(“Tridion.ContentDelivery.MyNamespace.MyClass”)

希望这有帮助


注意:回答您的问题:因为您没有appender,并且根日志记录设置为WARN。默认情况下,logback.xml只包含用于“com.tridion”的appender,但我猜
this.getType().ToString()
的输出不以该字符串开头。

Hi@sea\u gull:我的根级别当前为“warn”,而我的日志显示为“error”-根级别不应该包含该日志语句吗?我假设“warn”包括“warn”和“error”,就像在log4j中一样。我正在尝试定义一个名为“a.B”的新记录器。假设我的类型是A.B.C.D,我的logger.Error()语句应该包含在该logger定义中,是吗?您好@George:您说得对,日志应该在您的文件中。除非您有一些奇怪的定义,这些定义阻止了特定类的日志记录。实际上,最简单的方法是专门为类创建一个记录器,并从中获取if:.contentdeliveryserver是完全正确的。我编辑了这个问题以反映这一点。