我正在使用一些自定義SharePoint工作流程組件來處理項目,這些組件是我想要添加log4net的。log4net和Sharepoint 2007工作流程
我真的很努力讓log4net輸出任何東西,但!
這裏是我的當前設置:
在代碼隱藏我的工作流程:
private ILog log;
public MessageQueueWorkflow()
{
InitializeComponent();
string filepath = ConfigurationManager.AppSettings["log4netConfigPath"];
if (!string.IsNullOrEmpty(filepath))
{
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(filepath));
log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
}
public Guid workflowId = default(System.Guid);
public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
{
try
{
#region Logging
if (log.IsDebugEnabled)
{
log.Debug(System.Reflection.MethodInfo.GetCurrentMethod().Name);
}
#endregion Logging
// do some stuff
}
catch (Exception ex)
{
if (log.IsErrorEnabled)
{
log.Error("An error has occurred.", ex);
}
throw ex;
}
}
在我的web.config的SharePoint網站:
<appSettings>
<add key="log4netConfigPath" value="C:\Inetpub\wwwroot\wss\VirtualDirectories\80\log4net.config"/>
</appSettings>
在我log4net.config文件:
<log4net debug="true">
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<applicationName value="MyApp" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d %-5p %c - %m%n" />
</layout>
</appender>
</log4net>
現在,當我運行這個工作流程時,我期望看到EventViewer中顯示出一些調試條目,但我什麼都沒有。
任何想法我做錯了什麼?
謝謝!
太棒了......謝謝Stefan。我對配置文件進行了相當廣泛的混淆,並沒有注意到我敲掉了節點!跟蹤也是一個很好的建議,並告訴我,無論服務ID Sharepoint正在運行,都無法使用EventLog。我已經改變它登錄到一個文件,現在它工作正常。 –
NeilD
2010-09-10 10:19:39