J'ai la classe où des journaux écrits, j'ai utilisé log4net: Les journaux ont fonctionné. Mais comment changer ce code, ce préfixe résulte dans chaque fichier "{i}" code> définit avant de rédiger un bloc de journaux et n'a pas besoin d'ajouter à chaque fois quand écrire sur la consigne? Quelque chose aime ceci: p>
{i} code> p> p> p> p> p> p> p> p> P>
4 Réponses :
Ce que vous voulez faire n'est pas une fonctionnalité intégrée de log4net. Vous auriez besoin d'écrire une enveloppe autour de la logique Log4Net pour ajouter cette fonctionnalité. Quelque chose comme ça, mais il s'agit d'un brouillon, vous auriez besoin de le réparer et de le compléter.
class MyLogger { private readonly string _prefix; private readonly ILog _logger = LogManager.GetLogger(typeof(MyClass)); public MyLogger(string prefix) { _prefix = prefix; } public void Info(string info) { _logger.Info($"{_prefix} {info}"); } }
La partie la plus la plus simple serait d'utiliser une nouvelle méthode comme celle-ci et une propriété pour votre préfixe:
class MyClass { private readonly ILog _logger = LogManager.GetLogger(typeof(MyClass)); public int Prefix {get;set;} public void Work() { PrintLine("start"); PrintLine("work"); PrintLine("finished"); } private void PrintLine(string txt) { _logger.Info(Prefix + " " + txt); } }
Créez votre propre enregistreur qui incapable alors vous pouvez utiliser iLog code> et implémentez
préfixe code> membre.
à l'aide de code> instruction: p>
J'ai trouvé debout pour ce cas. logicalthreadContext code> pour log4net, et mon problème est résolu comme ceci:
using (LogicalThreadContext.Stacks["NDC"].Push($"{i}"))
{
_logger.Info("start");
_logger.Info("work");
_logger.Info("finished");
}
Pouvez-vous simplement ajouter une autre ligne qui montre simplement le préfixe au début de la méthode. _logger.info ("{i}"); ?
J'ai besoin
"{i}" code> dans chaque ligne de journal, quand log.info, log.warn ou ainsi appelé appelé. Je ne veux pas d'écrire un préfixe à chaque fois.