【问题标题】:How can I display my created error list using csvhelper如何使用 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 将是有益的

标签: c# csvhelper


【解决方案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);

        } 

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2019-07-29
    • 2020-09-05
    相关资源
    最近更新 更多