如何使用 csvhelper 显示我创建的错误列表

Posted

技术标签:

【中文标题】如何使用 csvhelper 显示我创建的错误列表【英文标题】:How can I display my created error list using csvhelper 【发布时间】:2021-12-28 06:24:20 【问题描述】:

道歉,因为这似乎是一个愚蠢的问题,但我错过了一些东西,不知道该怎么做。

作为我正在制作的应用程序的一部分,我正在使用 CSVHelper 创建一个文件,其中包含使用该应用程序时可能出现的任何错误的详细信息,例如无法连接到数据库、缺少值等。我有一直在关注本教程:https://www.youtube.com/watch?v=fRaSeLYYrcQ 并对其进行了更多编辑以满足我的需要。我有一个像这样的错误日志文件:

public class ErrorLogging

    public string ErrorType  get; set; 
    public string Relation  get; set; 
    public string Message  get; set; 



    public static List<ErrorLogging> GetErrors(string type, string relating, string message)
    

        return new List<ErrorLogging>
        
            new ErrorLogging
            
                ErrorType = type,
                Relation = relating,
                Message = message

            
        ;

    

所以我在这里做了,所以 csv 文件中的列标题将是 ErrorType、Relating 和 Message

我还有一个导出日志文件:

class ExportLog

    public static void Log<T>(string path, string file, List<T>report)
    
        var csvPath = Path.Combine(path + "\\", file);

        using (var streamWriter = new StreamWriter(csvPath))
        
            using (var csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture))
            
                csvWriter.WriteRecords(report);

            
        

    

在我的主文件 program.cs 中,然后我通过执行以下操作来使用它们:

        if (validateRoleTitles is not false)
        
            log.Information("Roles found");
        

        else
        
            log.Warning("Roles could not be found");
            ErrorLogging.GetErrors("Warning", "Database", "Not all roles found in the database");

        

我现在需要通过执行以下操作来创建包含错误列表的 csv 文件:

 ExportLog.Log(config.ExportFolder, exportFile, "error logging list here");

但是,如果有意义,我不确定如何实际显示我正在创建的这些列表?

我做不到:

ExportLog.Log(config.ExportFolder, exportFile, ErrorLogging.GetErrors());

因为它将寻找要传入的参数。我知道我在这里遗漏了一些非常明显的东西,但无法弄清楚是什么,任何帮助将不胜感激

【问题讨论】:

这不能回答您的问题 - 您是否考虑过使用日志库?类似logging.apache.org/log4net 有人特别要求我使用 csvhelper 执行此操作,但我会考虑自己使用,谢谢 旁注:Path.Combine(path, file),而不是Path.Combine(path + "\\", file) 错误列表 - 但您的列表只包含一个错误?当您调用 GetErrors 时,您不会存储返回值? 也许使用一些现有的日志记录规定并为其编写一个新的输出接收器(如果不存在的话)创建一个 CSV 将是有益的 【参考方案1】:

所以我最终解决了我的问题,我一直在用错误的方式解决它,我不需要:

public static List<ErrorLogging> GetErrors(string type, string relating, string message)


    return new List<ErrorLogging>
    
        new ErrorLogging
        
            ErrorType = type,
            Relation = relating,
            Message = message

        
    ;


在 ErrorLogging.cs 中,它只需要:

public class ErrorLogging

    public string ErrorType  get; set; 
    public string Relation  get; set; 
    public string Message  get; set; 


然后在 program.cs 中我可以像这样声明一个新列表:

  List<ErrorLogging> ErrorList = new List<ErrorLogging>();

然后当有一点我需要添加到列表中时,我可以简单地按照以下方式做一些事情:

            ErrorList.Add(new ErrorLogging()
            
                ErrorType = "Warning",
                Relation = "Database",
                Message = "Not all properties found in the database"
            );

然后在创建带有错误列表的 csv 时,我可以检查列表是否为空,如果不为空则创建:

       if (ErrorList.Any())
       
            ExportLog.Log(config.LogFolder, errorLog, ErrorList);

         

【讨论】:

以上是关于如何使用 csvhelper 显示我创建的错误列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 CsvHelper 将 CSV 中的所有值读入列表

使用 csvHelper 动态创建列

使用CsvHelper写入数据时出现异常

使用 CsvHelper 时转换为十进制

如何将 EnumConverter 与 CsvHelper 一起使用

CsvHelper 用引号包裹所有值