0

我正在使用 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; }
    } 

谢谢。

4

1 回答 1

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

于 2012-04-26T17:48:56.253 回答