1
2
我把其他答案放在第二位, 取决于你对数据做了什么 . 这里有两种情况:
我会说,如果用户对它做了任何操作,那么登录到db,如果它是为您做的,那么一个文件可能就足够了。 |
2
6
有趣的问题是,您是否应该决定记录到数据库,您在哪里记录数据库连接错误? 如果我要登录到数据库,我总是有一个辅助日志位置(文件、事件日志等),以防出现通信错误。它确实使以后诊断问题更加容易。 |
3
3
想到的一件事是,您可以让每个线程写入自己的日志文件,然后每天执行一次批处理来合并它们。 如果您要登录到数据库,您可能需要进行一些调整和优化,特别是在数据库将通过网络的情况下。至少您需要重用DB连接。 此外,您对登录数据库有什么具体的需求吗?如果您所需要的只是一个“grep”,那么我认为您登录数据库并没有获得多少好处。 |
4
2
不确定是否有用,但还有一个实用程序 Microsoft LogParser 可以用来解析基于文本的日志文件,并像数据库一样使用它们。从网站:
我自己没有用过这个程序,但它看起来很有趣! |
5
2
或者登录到队列?这样你就可以在你想登录不同的东西的时候关掉轮询器。它使滚动和归档日志文件变得非常容易。这也很好,因为您可以添加记录不同内容的轮询器,例如:
|
6
1
数据库-因为您提到了多个线程。同步和过滤检索是我回答问题的原因。
|
7
1
有一些方法可以克服文件日志记录的局限性。 您总是可以用某种类型的线程ID来启动每个日志条目,并对各个线程ID进行grep处理。或每个线程的不同日志文件。 我以前在一个单独的线程中以较低的优先级登录到数据库。我必须说,当你试图找出问题所在时,可查询性是非常有价值的。 |
8
1
比如说一个sqlite数据库,记录到数据库文件怎么样?我认为它可以处理多线程写入——尽管这也可能有它自己的性能开销。 |
9
0
我认为这很大程度上取决于你以后对日志文件做了什么。 在这两个操作中,写入日志文件的速度更快,特别是当您建议写入另一个服务器上的数据库时。 但是,如果您尝试定期处理和搜索日志文件,那么最好的地方是数据库。 如果您使用log4net这样的日志框架,它们通常提供简单的基于配置文件的方法,将输入重定向到文件或数据库。 |
10
0
我喜欢盖乌斯的回答。将所有日志语句放入线程安全队列,然后从中处理它们。对于DB,您可以将它们成批处理,比如说一批处理100条日志语句,对于文件,您可以在它们进入队列时将它们流到文件中。 文件还是数据库?正如许多其他人所说,这取决于您需要日志文件的用途。 |
Abdullah Chaudhry · json文件上的文件旋转和删除 1 年前 |
Max S · 如何从CMD读取日志的所有输出 6 年前 |
Ivan Denchev · Apache-过去一小时的日志 6 年前 |
ninja.coder · Log4j中的字符串串联性能 6 年前 |
Rich · 如何记录日志。是否与操作员一起调试? 6 年前 |