Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
Language agnostic 从多个方法写入文件的最佳实践_Language Agnostic_Logging - Fatal编程技术网

Language agnostic 从多个方法写入文件的最佳实践

Language agnostic 从多个方法写入文件的最佳实践,language-agnostic,logging,Language Agnostic,Logging,我有一个类,其中包含一系列方法,用于检查每周收集的数据(如格式良好和收集数据时的其他错误)。每个方法都执行一个测试,然后打印测试摘要 我想将这些测试的输出打印到一个文件中,但我不确定最好的方法是什么。例如 类是否应该为文件保存一个实例变量,并且每个方法都应该打开/追加/关闭文件?(问题是方法有时会调用其他方法,所以这看起来有点混乱?) 每个方法都应该作为参数传递文件吗?(看起来也很凌乱。) 每个方法是否应该返回一个字符串,调用所有其他测试的“中心”方法是否应该将所有这些字符串输出到一个文件

我有一个类,其中包含一系列方法,用于检查每周收集的数据(如格式良好和收集数据时的其他错误)。每个方法都执行一个测试,然后打印测试摘要

我想将这些测试的输出打印到一个文件中,但我不确定最好的方法是什么。例如

  • 类是否应该为文件保存一个实例变量,并且每个方法都应该打开/追加/关闭文件?(问题是方法有时会调用其他方法,所以这看起来有点混乱?)
  • 每个方法都应该作为参数传递文件吗?(看起来也很凌乱。)
  • 每个方法是否应该返回一个字符串,调用所有其他测试的“中心”方法是否应该将所有这些字符串输出到一个文件
我不太熟悉使用日志库——这是一个解决方案吗

我的特殊背景 我有一个刮板,可以从各种网站上提取数据并将其存储在数据库中。网站随时都在变化,所以我正在编写一个“刮擦检查”程序,检查我的刮擦是否有各种各样的东西,比如:

  • 空结果数
  • 结果长度
  • 结果中的怪异人物
  • 等等
所以我有这样的方法:

  • 检查\u num\u empty\u结果
  • 检查\u奇怪的\u字符
  • check_scrap(调用一系列其他检查)
  • check_scrape_pair(有时我想检查成对的刮片,例如,将结果相互匹配,因此单独检查每个刮片是不同的)
  • 等等

我想让我的“scrape checker”程序打印出一个总结所有检查的文件。

最终,这取决于您使用的语言

如果您的语言允许,第一种解决方案最有意义。对于日志类的每个实例,都有一个用于读取/写入文件对象的字段。这基本上相当于将file对象作为参数传递给每个方法


也就是说,大多数成熟的语言都有模块,这些模块将为您完成很多这方面的工作;在我的sh/awk、Perl和Python的基础上,我想到它们都适合这个任务(不过,如果您愿意,可以使用Java或其他语言)。

最终,这取决于您使用的语言

如果您的语言允许,第一种解决方案最有意义。对于日志类的每个实例,都有一个用于读取/写入文件对象的字段。这基本上相当于将file对象作为参数传递给每个方法


也就是说,大多数成熟的语言都有模块,这些模块将为您完成很多这方面的工作;在我的sh/awk、Perl和Python的基础上,我想到了它们都适合这个任务(尽管如果你想,你可以使用Java或其他东西)。

似乎日志框架将是一个完美的解决方案。如果您使用的是Java或.NET,那么log4j和log4net实际上就是这方面的标准

日志框架似乎是一个完美的解决方案。如果您使用的是Java或.NET,那么log4j和log4net实际上就是这方面的标准

关注点分离。编写关注刮取活动的代码,并返回刮取的值。然后用于日志记录,这可以大大简化问题,因为方面包含对文件或日志记录API的引用

关注点分离。编写关注刮取活动的代码,并返回刮取的值。然后用于日志记录,这可以大大简化问题,因为方面包含对文件或日志记录API的引用