如何使用Log4Net在单个自定义Log.Info字段中输出大项目数(256项)?

时间:2012-04-26 16:58:14

标签: c#-4.0 log4net

我正在使用Log4Net并创建了一个用于格式化和输出的自定义类 到Windows服务循环中的CSV文件:

private void AutoLogger(uint id, EdkDll.EE_DataChannel_t channel, double[] value)
        {

            try
            {
                log.Info(new Log
                {
                    ElapsedTime = timer.Elapsed.Minutes.ToString(),
                    UserId = id,
                    Action = channel.ToString(),
                    Value = value.ToString()
                });
            }

问题是“值”对于循环的每次迭代都有256个值。 我想在循环的log.Info(new Log代码中创建一个循环 价值。类似的东西:

log.Info(new Log
                {
                    ElapsedTime = timer.Elapsed.Minutes.ToString(),
                    UserId = id,
                    Channel = channel.ToString(),
                    for(int i = 0; i < value.Count; i++)
                    {  
                      "Value_" + i = value[i].ToString()
                    }
                });

但这是不可能的。知道怎么做吗?我的Log课程如下:

public class Log
    {
        public DateTime DateAndTime { get; set; }
        public string ElapsedTime { get; set; }
        public string Level { get; set; }
        public uint UserId { get; set; }
        public string Action { get; set; }
        public string Value { get; set; }
    } 

感谢。

1 个答案:

答案 0 :(得分:0)

你可以将它循环到一个字符串中,用分隔符(甚至是\ n)然后log.Info(newString);?如果你想这样做,只需创建一个扩展方法......

EX: (注意:这不是我刚刚在这里输入的测试代码)

  string strBuffer ="";
    List<Dingus> dingusList = GetDingusList();
    foreach( Dingus dingus in dingusList )
    {
        \\if you have a ToString defined use it here, else just output all the properties of your object
        strBuffer+= dingus.name+" ,"+dingus.value+"\n";
    }
    log.Info(strBuffer);

另一种方法的例子:

http://www.l4ndash.com/Log4NetMailArchive%2Ftabid%2F70%2Fforumid%2F1%2Fpostid%2F15171%2Fview%2Ftopic%2FDefault.aspx