0
votes

Ajouter Préfixe pour Logs Lines Log4net

J'ai la classe où des journaux écrits, j'ai utilisé log4net: xxx

Les journaux ont fonctionné. Mais comment changer ce code, ce préfixe "{i}" 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: xxx

résulte dans chaque fichier {i}


2 commentaires

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}" 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.


4 Réponses :


0
votes

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}");
  }
}


0 commentaires

0
votes

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);
    }

}


0 commentaires

1
votes

Créez votre propre enregistreur qui incapable iLog et implémentez préfixe membre. xxx

alors vous pouvez utiliser à l'aide de instruction: xxx


0 commentaires

0
votes

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");
}


0 commentaires