我试图find一个很好的方式来使用python实时读取日志文件。 我想从写入日志文件中逐行处理一行。 不知何故,我需要不断尝试读取文件,直到它被创build,然后继续处理行,直到我终止进程。 有没有适当的方法来做到这一点? 谢谢。
我想知道的最重要的事情是设备types,操作系统版本,如果它有一个硬件键盘和可能的屏幕分辨率。 但如果你知道其他有用的debugging信息,请添加他们:) 我发现这个OS版本: string += "OS Version: " + System.getProperty("os.version"); 我如何获得其他属性?
在阅读完“ 你对圆形复杂性有什么限制? ”之后,我发现很多同事对我们项目的这个新的质量保证政策非常恼火:每个function不会超过十个循环复杂性。 含义:不超过10个“if”,“else”,“try”,“catch”等代码工作stream分支语句。 对。 正如我在“ 你testing私有方法吗? ',这样的政策有很多好的副作用。 但是:在我们(200人 – 7年)的项目开始时,我们愉快地进行了日志logging(不,我们不能轻易将它委托给日志的某种“ 面向方面编程 ”方法)。 myLogger.info("A String"); myLogger.fine("A more complicated String"); … 当我们系统的第一个版本上线时,我们遇到了很大的内存问题,而不是由于日志logging(这是closures的),但是由于总是计算的日志参数 (string),然后传递给'info()'或'fine()'函数,只能发现日志级别为“OFF”,并且没有发生日志logging! 所以QA回来了,并且敦促我们的程序员做条件logging。 总是。 if(myLogger.isLoggable(Level.INFO) { myLogger.info("A String"); if(myLogger.isLoggable(Level.FINE) { myLogger.fine("A more complicated String"); … 但是现在,由于每个函数的限制不能被移动10圈复杂度,他们认为他们放入函数的各种日志被认为是一个负担,因为每个“if(isloggable())”是算作+1圈复杂度! 因此,如果一个函数有8个“if”,“else”等等,在一个紧密耦合的不容易共享的algorithm中,以及3个关键的日志动作……即使条件日志可能不是真的该function的复杂性的一部分… 你将如何处理这种情况? 在我的项目中,我已经看到了一些有趣的编码演变(由于这个“冲突”),但是我只想把你的想法放在第一位。 谢谢你所有的答案。 我必须坚持认为,问题不是“格式化”相关的,而是“论证评估”相关的(评估在做一个什么都不会做的方法之前可能是非常昂贵的) 所以当写上面的“一个string”时,我实际上是指一个函数(),用一个函数()返回一个string,并调用一个复杂的方法来收集和计算logging器显示的所有types的日志数据。或不(因此问题和使用条件日志的义务 ,因此人为地增加“圈复杂性”的实际问题…) 我现在得到你们中的一些人提出的“ 可变函数”的一点(谢谢约翰)。 注意:在java6中的一个快速testing表明,我的varargs函数在被调用之前确实评估了它的参数,所以它不能被应用于函数调用,而是被应用于“日志search器对象”(或者“函数包装器”),其中toString )只会在需要的时候被调用。 得到它了。 现在我已经发表了关于这个话题的经验。 我会把它留在下个星期二投票,然后我会select你的答案之一。 再次,谢谢你的所有build议:)
我有几个不同的进程,我希望他们都login到同一个文件。 这些进程在Windows 7系统上运行。 有些是python脚本,其他的是cmdbatch file。 在Unix下,你只需让每个人以附加模式打开文件并写下来。 只要每个进程在单个消息中writeless于PIPE_BUF字节,则每个write调用将被保证不与其他任何其他进行交错。 有没有办法在Windows下做到这一点? 天真的类Unix方法失败,因为Windows不喜欢多个进程默认情况下一次打开文件。
我在我的应用程序中使用Log4J进行日志logging。 以前我使用debugging调用如: 选项1: logger.debug("some debug text"); 但是有些链接build议首先检查isDebugEnabled() ,比如: 选项2: boolean debugEnabled = logger.isDebugEnabled(); if (debugEnabled) { logger.debug("some debug text"); } 所以我的问题是“ 选项2以任何方式改善性能? ”。 因为在任何情况下,Log4J框架都有相同的debugEnabled检查。 对于选项2,如果我们在单个方法或类中使用多个debugging语句,那么框架不需要多次调用isDebugEnabled()方法(在每次调用时),可能会有好处。 在这种情况下,它只调用一次isDebugEnabled()方法,如果Log4J被configuration为debugging级别,那么实际上它调用两次isDebugEnabled()方法: 在为debugEnabledvariables赋值的情况下, 实际上由logger.debug()方法调用。 我不认为如果我们在方法或类中写入多个logger.debug()语句,并根据选项1调用debug()方法,那么Log4J框架与选项2相比是开销。由于isDebugEnabled()小的方法(在代码方面),它可能是很好的候选内联。
我正在使用python 日志logging模块,我想禁用一段时间的控制台日志logging,但它不起作用。 #!/usr/bin/python import logging logger = logging.getLogger() # this gets the root logger # … here I add my own handlers #logger.removeHandler(sys.stdout) #logger.removeHandler(sys.stderr) print logging.handlers # this will print [<logging.StreamHandler instance at …>] # but I may have other handlers there that I want to keep logger.debug("bla bla") 上面的代码在stdout上显示“bla bla”,我不知道如何安全地禁用控制台处理程序。 我怎样才能确定我暂时删除了控制台stream处理程序,而不是另一个?
我有一些testing代码调用Javalogging器来报告其状态。 在JUnittesting代码中,我想validation是否在此logging器中创build了正确的日志条目。 大致如下: methodUnderTest(bool x){ if(x) logger.info("x happened") } @Test tester(){ // perhaps setup a logger first. methodUnderTest(true); assertXXXXXX(loggedLevel(),Level.INFO); } 我想这可以用一个特别改编的logging器(或处理程序,或格式化程序)来完成,但我宁愿重新使用已经存在的解决scheme。 (说实话,我不清楚如何从logging器获取logRecord,但假设这是可能的。)
我正在使用Selenium通过Python API绑定在Chrome中运行testing,而且我很难弄清楚如何configurationChrome以使得载入testing的console.log输出可用。 我看到WebDriver对象上有get_log()和log_types()方法,并且我看到了Get chrome的控制台日志 ,它显示了如何在Java中执行操作。 但是我没有在Python API中看到相当于Java的LoggingPreferencestypes。 有什么方法可以完成我所需要的吗?
在我的PHP应用程序中,我需要从多个文件 (主要是日志) 的末尾开始读取多行 。 有时我只需要最后一个,有时我需要几十或几百个。 基本上,我想要一些像Unix tail命令一样灵活的东西。 这里有一些关于如何从文件中获得最后一行的问题(但是我需要N行),并给出了不同的解决scheme。 我不确定哪一个最好,哪个更好。
print , NSLog和println什么区别,我应该什么时候使用它们? 例如,在Python中,如果我想打印一个字典,我只是print myDict ,但现在我有两个其他选项。 我应该如何和什么时候使用每个?