我有一个用户控件呈现来自自定义(非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分钟前被修改,并且不包含我的日志消息文本(我只是在记事本中搜索了“数据库”)
为什么我的日志输出没有发送到日志?
答案 0 :(得分:3)
您有两个选择:
您将根日志记录定义为“DEBUG”,但这样做的缺点是允许来自Tridion正在使用的所有第三方库的大量日志记录。以下是摘录:<root level="DEBUG"> <appender-ref ref="rollingCoreLog"/> </root>
您定义了一个特殊的appender以包含Tridion .NET日志记录:<logger name="Tridion.ContentDelivery" level="${log.level}"><appender-ref ref="rollingCoreLog"/></logger>
请注意,在第二种情况下,您需要将记录器绑定到Tridion.ContentDelivery下的命名空间。这是一个例子:
var logger = Tridion.ContentDelivery.Web.Utilities.LoggerFactory.GetLogger( “Tridion.ContentDelivery.MyNamespace.MyClass”);
希望这有帮助。
P.S。:回答你的问题:因为你没有appender并且root日志记录被设置为WARN。默认情况下,logback.xml仅包含“com.tridion”的appender,但我想this.getType().ToString()
的输出不是以该字符串开头。