C'est une mauvaise idée, je sais, mais... Je veux configurer log4net de manière programmatique à partir de zéro, sans fichier de configuration. Je travaille sur une application de journalisation simple pour moi et mon équipe à utiliser pour un groupe d'applications départementales relativement petites dont nous sommes responsables. Je veux qu'elles soient toutes enregistrées dans la même base de données. L'application de journalisation est juste une enveloppe autour de log4net avec le AdoNetAppender préconfiguré.
Toutes les applications sont déployées par ClickOnce, ce qui pose un petit problème pour le déploiement du fichier de configuration. Si le fichier de configuration faisait partie du projet de base, je pourrais définir ses propriétés pour le déployer avec l'assemblage. Mais il fait partie d'une application liée, je n'ai donc pas la possibilité de le déployer avec l'application principale. (Si ce n'est pas vrai, que quelqu'un me le fasse savoir).
Probablement parce que c'est une mauvaise idée, il ne semble pas y avoir beaucoup d'exemples de code disponible pour configurer programmatiquement log4net à partir de zéro. Voici ce que j'ai jusqu'à présent.
Dim apndr As New AdoNetAppender()
apndr.CommandText = "INSERT INTO LOG_ENTRY (LOG_DTM, LOG_LEVEL, LOGGER, MESSAGE, PROGRAM, USER_ID, MACHINE, EXCEPTION) VALUES (@log_date, @log_level, @logger, @message, @program, @user, @machine, @exception)"
apndr.ConnectionString = connectionString
apndr.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
apndr.CommandType = CommandType.Text
Dim logDate As New AdoNetAppenderParameter()
logDate.ParameterName = "@log_date"
logDate.DbType = DbType.DateTime
logDate.Layout = New RawTimeStampLayout()
apndr.AddParameter(logDate)
Dim logLevel As New AdoNetAppenderParameter()
logLevel.ParameterName = "@log_level"
'And so forth...
Après avoir configuré tous les paramètres pour apndr
J'ai d'abord essayé ce...
Dim hier As Hierarchy = DirectCast(LogManager.GetRepository(), Hierarchy)
hier.Root.AddAppender(apndr)
Ça n'a pas marché. Alors, comme un coup dans le vide, j'ai essayé ceci à la place.
BasicConfigurator.Configure(apndr)
Cela n'a pas fonctionné non plus. Quelqu'un a-t-il de bonnes références sur la façon de configurer log4net de manière programmatique à partir de zéro, sans fichier de configuration ?
0 votes
Voir aussi stackoverflow.com/questions/1436713/