Je travaille sur un projet avec des composants de Sharepoint Workflow personnalisés auxquels j'aimerais ajouter log4net.log4net et Sharepoint 2007 Workflow
Je me bats vraiment pour que log4net sorte quoi que ce soit!
Voici ma configuration actuelle:
Dans le codebehind pour mon flux de travail:
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;
}
}
Dans mon web.config pour le site Sharepoint:
<appSettings>
<add key="log4netConfigPath" value="C:\Inetpub\wwwroot\wss\VirtualDirectories\80\log4net.config"/>
</appSettings>
Dans mon fichier 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>
Maintenant, lorsque je lance ce workflow, je m'attends à voir apparaître des entrées de débogage dans l'EventViewer, mais je ne reçois rien.
Des idées que je fais mal?
Merci!
Génial ... Merci Stefan. Je me suis beaucoup amusé avec le fichier de configuration, et je n'avais pas remarqué que j'avais écroulé le nœud! Le traçage était également une bonne suggestion, et m'a montré que quel que soit l'ID de service sous lequel Sharepoint fonctionne, il n'a pas accès à l'EventLog. Je l'ai changé pour enregistrer dans un fichier, et cela fonctionne correctement maintenant. –
NeilD