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
Tomcat 有没有一种方法可以告诉您什么上下文/webapp正在写入给定的日志文件?_Tomcat_Logging_Tomcat6 - Fatal编程技术网

Tomcat 有没有一种方法可以告诉您什么上下文/webapp正在写入给定的日志文件?

Tomcat 有没有一种方法可以告诉您什么上下文/webapp正在写入给定的日志文件?,tomcat,logging,tomcat6,Tomcat,Logging,Tomcat6,我有一个tomcat6服务器,上面运行着大约70个web应用程序,我有一个(或多个)服务器将shared.jar设置为在调试模式下登录,这正在消耗我的磁盘 我尝试在文件上使用lsof,但它只是告诉我,是tomcat用户和java程序在向文件写入(我已经知道) 我在Google上花了一些时间,但一定是使用了错误的搜索词,因为我得到的只是Tomcat本身如何记录日志的信息,或者如何编写在webapp中进行日志记录或文件写入所需的代码 日志文件没有我需要的信息来判断哪个webapp正在调用它,只有与实

我有一个tomcat6服务器,上面运行着大约70个web应用程序,我有一个(或多个)服务器将shared.jar设置为在调试模式下登录,这正在消耗我的磁盘

我尝试在文件上使用lsof,但它只是告诉我,是tomcat用户和java程序在向文件写入(我已经知道)

我在Google上花了一些时间,但一定是使用了错误的搜索词,因为我得到的只是Tomcat本身如何记录日志的信息,或者如何编写在webapp中进行日志记录或文件写入所需的代码

日志文件没有我需要的信息来判断哪个webapp正在调用它,只有与实际正在编写的jar相关的信息


有人能告诉我一些关于如何找出导致问题的web应用程序的信息,或者告诉我如何确定这一点吗?

如果多个web应用程序正在写入同一个文件,则无法轻松取消单击该文件。您需要重新配置每个web应用程序的日志记录,以将日志记录到一个单独的文件,而不是同一个文件。我假设这个日志记录是通过log4j这样的框架完成的。您需要为所使用的框架以适当的方式修改配置

或者,检查日志记录配置文件,查看哪一个配置用于调试,并对其进行更改


第三个选项——远不是理想的选项——在停止web应用程序时,使用manager应用程序执行二进制搜索,以确定哪个应用程序正在填充日志文件。

将线程ID添加到日志格式,然后与线程转储进行比较。

请在您的问题中添加以下附加信息。正在写入哪个日志文件?哪个JAR文件正在编写?JAR文件位于哪里?相关日志文件位于/var/log/webapps/workflow中。jar是一个实用jar(内部创建),在这个tomcat6实例上运行的许多webapp都使用它。我不知道确切的位置,因为它可能在任何数量的.war文件中。在这里的一位开发人员的帮助下,我能够找到这个应用程序。事实证明,记录的一些信息确实确定了是哪个webapp生成了数据,但前提是您非常熟悉utilityjar的工作原理。从那里,我找到了令人不快的webapp。我真的希望有一个程序化的方式(类似于lsof),但是,万一它再次发生。