从多种方法写入文件的最佳实践

时间:2010-11-18 22:21:15

标签: language-agnostic logging

我有一个类,它包含一堆检查数据的方法,每周都会检查数据(例如,在收集数据时格式良好和其他错误)。每种方法都执行测试,然后打印出测试摘要。

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

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

我对使用记录器库并不熟悉 - 这会是一个解决方案吗?

我的特定背景

我有一个刮刀从各种网站提取数据并将它们存储在数据库中。网站一直在变化,所以我正在编写一个“刮擦检查程序”程序来检查我的各种各样的东西,例如:

  • 空结果数
  • 结果的长度
  • 结果中的奇怪字符

所以我有类似的方法:

  • check_num_empty_results
  • check_weird_characters
  • check_scrape(调用一堆其他支票)
  • check_scrape_pair(有时候我想一起检查一对擦除,例如,为了使结果相互匹配,所以这是不同的,每个单独检查)

我希望我的“刮擦检查程序”打印出一个汇总所有检查的文件。

3 个答案:

答案 0 :(得分:2)

关注点分离。编写焦点于抓取活动的代码并返回刮取的值。然后使用aspect oriented programming进行日志记录,这可以大大简化问题,因为方面保存对文件或日志记录API的引用。

答案 1 :(得分:1)

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

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

也就是说,大多数成熟的语言都有模块可以为你做很多工作;在我的sh / awk,Perl和Python的顶部都可以想到适合这个任务(尽管如果你愿意,你可以使用Java或其他东西)。

答案 2 :(得分:1)

看起来像一个日志框架将是一个完美的解决方案。如果您使用的是Java或.NET,那么log4j和log4net几乎就是事实上的标准。