Какой простой способ зарегистрировать все элементы в списке, используя log4net (или другие каркасы журналирования)? - PullRequest
1 голос
/ 07 августа 2010

У меня обычно есть методы, возвращающие IList.Мне нужно зарегистрировать результат, возвращающийся в этом списке.

Есть ли лучший способ, чем циклически повторять элементы в списке и печатать их один за другим, как это?

foreach(string productName in productsNames)
            {
                prodsNames.Append(productName + " ");
            }
Logger.Debug("Loading data for Producers: " + prodsNames);

isЕсть ли способ сделать это проще?

Ответы [ 4 ]

1 голос
/ 25 октября 2018

С NLog и Serilog вы можете сделать это:

Logger.Debug("Loading data for Producers: {producers}", prodsNames);

См. Также https://messagetemplates.org/

1 голос
/ 08 августа 2010

Я бы написал обертку для log4net, которая предоставляет такой метод:

void Debug(string message, IList elements);

Реализация может выглядеть следующим образом (некоторые детали опущены):

public Debug(string message, IList elements)
{
    // this.Logger returns a reference to ILog object
    if (this.Logger.IsDebugEnabled)
    {            
        string logMessage;
        // build the string that you want to write to the log
        this.Logger.Debug(logMessage);      
    }
}

Это всего лишь пример: вы можете разработать свой интерфейс так, как вам больше подходит.

Здесь вы можете найти некоторые идеи, как может выглядеть обертка.

0 голосов
/ 25 октября 2018

Есть ли причина не использовать string.Join()?

Logger.Debug("Loading data for Producers: " + string.Join(" ", productsNames));
0 голосов
/ 10 августа 2010

Сериализация списка до XML , запись строки XML .

...