import ftplib
import urllib2
import os
import logging
logger = logging.getLogger('ftpuploader')
hdlr = logging.FileHandler('ftplog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
FTPADDR = "some ftp address"
def upload_to_ftp(con, filepath):
try:
f = open(filepath,'rb') # file to send
con.storbinary('STOR '+ filepath, f) # Send the file
f.close() # Close file and FTP
logger.info('File successfully uploaded to '+ FTPADDR)
except, e:
logger.error('Failed to upload to ftp: '+ str(e))
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,我得到语法错误,这是什么正确的方法来记录文件的所有类型的异常
什么之间的区别print,NSLog以及println何时该使用的呢?
例如,在Python中,如果我想打印字典,我只是print myDict,但现在我有2个其他选项.我应该如何以及何时使用它们?
如何显示(至少)此信息的git日志输出:
* author
* commit date
* change
Run Code Online (Sandbox Code Playgroud)
我希望每个日志条目压缩到一行.什么是最短的格式?
(试过--format=oneline但没有显示日期)
我正在将Python异常消息打印到日志文件中logging.error:
import logging
try:
1/0
except ZeroDivisionError as e:
logging.error(e) # ERROR:root:division by zero
Run Code Online (Sandbox Code Playgroud)
是否可以打印有关异常的更详细信息以及生成它的代码而不仅仅是异常字符串?线号或堆栈跟踪之类的东西会很棒.
有没有办法使用logging模块自动将事物输出到stdout 以及它们应该去的日志文件?例如,我想所有呼叫logger.warning,logger.critical,logger.error去他们预期的地方,但除了总是被复制到stdout.这是为了避免重复消息,如:
mylogger.critical("something failed")
print "something failed"
Run Code Online (Sandbox Code Playgroud) 据谷歌称,在发布我的Android应用程序之前,我必须" 停用源代码中对Log方法的任何调用 ".摘录自出版物清单的第5部分:
在构建应用程序以进行发布之前,请确保停用日志记录并禁用调试选项.您可以通过删除源文件中对Log方法的调用来停用日志记录.
我的开源项目很大,每次发布时手动执行都很痛苦.此外,删除日志行可能很棘手,例如:
if(condition)
Log.d(LOG_TAG, "Something");
data.load();
data.show();
Run Code Online (Sandbox Code Playgroud)
如果我对日志行进行注释,则条件适用于下一行,并且可能不会调用load().这种情况是否足够罕见,我可以决定它不应该存在?
这是在官方清单上,所以我想很多人会定期这样做.
那么,如何有效但安全地删除所有日志行?
如何启用PostgreSQL 8.3执行的所有SQL的日志记录?
编辑(更多信息) 我更改了这些行:
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'
Run Code Online (Sandbox Code Playgroud)
并重新启动PostgreSQL服务...但没有创建日志...我正在使用Windows Server 2003.
有任何想法吗?
使用NLog进行日志记录的最佳或最有用的配置是什么?(只要它们有用,它们可以是简单的也可以是复杂的.)
我正在考虑一些示例,例如自动滚动特定大小的日志文件,更改布局(日志消息)是否存在异常,一旦发生错误就升级日志级别等.
以下是一些链接:
默认情况下,Requests python库将日志消息写入控制台,其行如下:
Starting new HTTP connection (1): example.com
http://example.com:80 "GET / HTTP/1.1" 200 606
Run Code Online (Sandbox Code Playgroud)
我通常对这些消息不感兴趣,并希望禁用它们.什么是沉默这些消息或减少请求的冗长的最佳方法?
这是我生命中的第一次,我发现自己处于一个可以开源的Java API的位置.希望被包括在许多其他项目中.
对于日志记录我(以及与我一起工作的人)总是使用JUL(java.util.logging)并且从未遇到任何问题.但是现在我需要更详细地了解我应该为我的API开发做些什么.我已经对此做了一些研究,并且我得到的信息让我感到更加困惑.因此这篇文章.
由于我来自JUL,我对此持偏见态度.我对其余的知识并不是那么大.
从我所做的研究中我得出了人们不喜欢JUL的原因:
"在Sun发布JUL之前,我开始使用Java进行开发,而且我更容易继续使用logging-framework-X而不是学习新东西".嗯.我不是在开玩笑,这实际上就是人们所说的.有了这个论点,我们都可以做COBOL.(但我当然可以说这是一个懒惰的家伙)
"我不喜欢JUL中日志记录级别的名称".好吧,说真的,这还不足以成为引入新依赖的理由.
"我不喜欢JUL输出的标准格式".嗯.这只是配置.你甚至不需要做任何代码方面的事情.(确实,过去你可能不得不创建自己的Formatter类来实现它).
"我使用其他也使用logging-framework-X的库,所以我觉得使用那个更容易".这是一个循环论证,不是吗?为什么'每个人'都使用logging-framework-X而不是JUL?
"其他人都在使用logging-framework-X".这对我来说只是上面的一个特例.多数并不总是正确的.
所以真正的大问题是为什么不是JUL?.我错过了什么?伐木立面的存在理由(SLF4J,JCL)是历史上存在多种伐木实施,其原因可以追溯到JUL之前的时代,正如我所看到的那样.如果JUL是完美的那么伐木外墙将不存在,或者什么?我们不应该首先质疑为什么它们是必要的而不是拥抱它们?(看看这些原因是否仍然存在)
好吧,到目前为止我的研究已经导致我可以看到的一些事情可能是JUL的真正问题:
表现.有人说SLF4J的表现优于其他表现.在我看来,这是一个过早优化的案例.如果你需要每秒记录数百兆字节,那么无论如何我都不确定你是否在正确的路径上.JUL也在不断发展,你在Java 1.4上做的测试可能不再适用.你可以在这里阅读它,这个修复已经成为Java 7.许多人还谈到了日志记录方法中字符串连接的开销.但是,基于模板的日志记录可以避免这种成本,并且它也存在于JUL中.我个人从来没有真正编写基于模板的日志记录 太懒了.例如,如果我使用JUL执行此操作:
log.finest("Lookup request from username=" + username
+ ", valueX=" + valueX
+ ", valueY=" + valueY));
Run Code Online (Sandbox Code Playgroud)
我的IDE会警告我并请求允许它将其更改为:
log.log(Level.FINEST, "Lookup request from username={0}, valueX={1}, valueY={2}",
new Object[]{username, valueX, valueY});
Run Code Online (Sandbox Code Playgroud)
..我当然会接受.许可授予 !谢谢您的帮助.
所以我自己并没有自己编写这样的语句,这是由IDE完成的.
关于性能问题的结论我没有发现任何迹象表明JUL的表现与竞争对手相比并不好.
从类路径配置.开箱即用的JUL无法从类路径加载配置文件.要做到这一点,需要几行代码.我可以看出为什么这可能很烦人,但解决方案简短而简单.
输出处理程序的可用性.JUL带有5个开箱即用的输出处理程序:控制台,文件流,套接字和内存.这些可以扩展或可以编写新的.例如,这可能是写入UNIX/Linux Syslog和Windows事件日志.我个人从来没有这个要求,也没有看过它,但我当然可以说明为什么它可能是一个有用的功能.例如,Logback附带了Syslog的附加程序.我仍然会争辩
我真的很担心我忽略了一些东西.除了JUL之外,使用伐木外墙和伐木实施是如此普遍,我必须得出结论,我只是不明白.那恐怕不是第一次.:-)
那我该怎么办?我希望它成功.我当然可以"顺其自然"并实施SLF4J(这些日子似乎最受欢迎)但是为了我自己的缘故,我仍然需要明白今天的JUL究竟出了什么问题才能保证所有的模糊?我会为我的图书馆选择JUL来破坏自己吗?
(nolan600于2012年7月7日添加的部分)
下面有一篇来自Ceki的参考文献,其中提到SLF4J的参数化比JUL快10倍或更快.所以我开始做一些简单的测试.乍一看,这种说法肯定是正确的.以下是初步结果(但请继续阅读!):
上面的数字是msecs,所以越少越好.因此,10倍的性能差异实际上非常接近.我最初的反应:这是很多!
这是测试的核心.可以看出,整数和字符串是在循环中构造的,然后在log语句中使用:
for …Run Code Online (Sandbox Code Playgroud)