Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何拆分包含许多属性的大型请求对象,其中一个属性是一个巨大的值列表_C#_.net_Logging_.net Core_Serilog - Fatal编程技术网

C# 如何拆分包含许多属性的大型请求对象,其中一个属性是一个巨大的值列表

C# 如何拆分包含许多属性的大型请求对象,其中一个属性是一个巨大的值列表,c#,.net,logging,.net-core,serilog,C#,.net,Logging,.net Core,Serilog,对不起,我马上就走。我是新来的 我有一个对象,它包含几个属性,其中一个属性本身就是一个列表。现在,我们不知道输入有效负载中的值列表有多大(可能是1000,也可能是100000)。在处理之前,我们将记录此请求负载 public class Make { public int ID { get; set;} public string Name { get; set;} public string Category { get; set;} public List&l

对不起,我马上就走。我是新来的

我有一个对象,它包含几个属性,其中一个属性本身就是一个列表。现在,我们不知道输入有效负载中的值列表有多大(可能是1000,也可能是100000)。在处理之前,我们将记录此请求负载

public class Make
{
    public int ID { get; set;}
    public string Name { get; set;}
    public string Category { get; set;}
    public List<Model> Models { get;set;}
}

public class Model
{
    public string Name { get; set;}
    public string County { get; set;}
    public string Submodel { get; set;}
}

public ProcessCars ( Make object)
{
    _logger.Verbose ("Some String...", {object});`
    // Processing///
    //.....//
}
我们使用
\u logger.Verbose(“一些字符串…”,{object})

当我们记录日志时,日志文件(我们使用Serilog)以JSON格式将其保存为具有巨大值的记事本文件

现在,当输入太大时,记录器尝试记录,但由于负载太大而失败并重试多次

我正在寻找一种方法来分裂或做一些循环,分裂和存储或什么。我不知道用C代码怎么做。我尝试过谷歌搜索,做了很多研究,但都是徒劳的。我找到了Lambda的SKIP和TASK方法,但不确定如何使用

下面的代码:在这种情况下,想象一下,“Model”就像1000,或者1001000它可以是任何东西。我只是在寻找C#中的循环逻辑,以将其划分为一个合适的数字并进行处理

public class Make
{
    public int ID { get; set;}
    public string Name { get; set;}
    public string Category { get; set;}
    public List<Model> Models { get;set;}
}

public class Model
{
    public string Name { get; set;}
    public string County { get; set;}
    public string Submodel { get; set;}
}

public ProcessCars ( Make object)
{
    _logger.Verbose ("Some String...", {object});`
    // Processing///
    //.....//
}
公共类生成
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共字符串类别{get;set;}
公共列表模型{get;set;}
}
公共类模型
{
公共字符串名称{get;set;}
公共字符串country{get;set;}
公共字符串子模型{get;set;}
}
公共车辆(制造对象)
{
_Verbose(“一些字符串…”,{object})`
//加工///
//.....//
}

我知道您的目的是查看或调试列表中的值。

如果我是你,我会问自己几个问题

我是否需要写入所有值?为什么我不能在登录之前先过滤
当您可以登录到数据库时,写入文本文件的目的是什么?Serilog支持数据库日志记录

将较大的值记录到文本文件是最佳做法吗?

只需在记录之前添加一个
if
。记录器是如何失败的?如果日志记录失败,Serilog的标准文件接收器将不会重试任何操作-这里听起来可能发生了其他事情。无论如何,使用
File.writealText(…someTempFile…
然后记录文件名,而不是其内容,可能会让你在短期内摆脱麻烦?@NicholasBlumhardt:我不知道怎么做,你能帮我写C代码吗?抱歉,我需要写所有的值,它们是关键的业务领域模型,无需过滤,因为所有值都非常重要。我不能登录数据库,5年的代码,我不能改变所有100000个地方和10000个项目。我不是因为这个而被雇佣的,没有时间或优先权,而是为了服务于企业。它的值不在文本文件中。这些是请求有效负载,用于任何客户出现问题时的调试或此类调查目的