我正在将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)
是否可以打印有关异常的更详细信息以及生成它的代码而不仅仅是异常字符串?线号或堆栈跟踪之类的东西会很棒.
我发现自己几次编写这种类型的东西.
for (int i = 0; i < 10; i++)
{
if (Thing.WaitingFor())
{
break;
}
Thread.Sleep(sleep_time);
}
if(!Thing.WaitingFor())
{
throw new ItDidntHappenException();
}
Run Code Online (Sandbox Code Playgroud)
它只是看起来像坏代码,有没有更好的方法这样做/它是一个糟糕的设计的症状?
我有一些数字Processor类可以完成两个非常不同的事情,但是从公共代码调用("控制反转"情况).
我想知道在决定它们是否应该全部继承BaseProcessor或实现IProcessor为接口时,我应该认识(或认识到,对于你的USsers)的设计考虑因素.
我有一段代码正在初始化一个记录器,如下所示.
logger = logging.getLogger()
hdlr = logging.FileHandler('logfile.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)
不幸的是这个代码被多次调用,有什么方法可以检查处理程序是否已经存在 - 我更愿意实现它而不必使用Singleton.
编辑:对不起,忘了提到这是在python 2.5 - 干杯,理查德
我们的一些客户想知道 - 看一些有关信息不一致的帖子.
http://code.google.com/p/googleappengine/issues/detail?id=1144
我一直困惑于此.在我们的一个客户端(Windows 7,.NET 2.0)计算机上,以下代码似乎失败(导致应用程序关闭)但似乎没有抛出异常.
在日志中打印"发送休息请求"然后没有.我的期望是打印以下日志消息之一(其中一个例外或一个信息消息).
浏览事件日志会显示Windows错误报告服务,然后在此时停止,但没有创建转储文件.
任何有关可能发生的事情的见解或如何获得更多信息来调试它将非常感激.谢谢
try
{
System.Net.ServicePointManager.Expect100Continue = false;
System.Net.ServicePointManager.UseNagleAlgorithm = false;
HttpWebRequest webRequest = ProxiedHttpWebRequest.CreateWithProxy(web_uri);
webRequest.Method = request_method;
if (content_type != null)
{
webRequest.ContentType = content_type;
}
webRequest.Method = request_method;
if (data != null)
{
webRequest.ContentLength = data.Length; //Count bytes to send
}
else
{
webRequest.ContentLength = 0;
}
webRequest.KeepAlive = true;
if (webRequest.Method == "POST")
{
//write post data
using (Stream os = webRequest.GetRequestStream())
{
os.Write(data, 0, data.Length);
}
}
if (headers != null)
{
foreach …Run Code Online (Sandbox Code Playgroud) 我从Django切换到Jinja但是在引用时我的很多模板都坏了
{{ entity.property }}
Run Code Online (Sandbox Code Playgroud)
如果实体未定义.在某些情况下是否会忽略UndefinedErrors,否则我将不得不添加很多
{% if entity %}{{ entity.property }}{% endif %}
Run Code Online (Sandbox Code Playgroud)
包装.
谢谢,理查德
谁能解释为什么这样有效:
Object ready_lock = new Object();
Object thread_lock = new Object();
public static bool able_to_get_lock = false;
public void GetThreadLock()
{
if (Monitor.TryEnter(thread_lock,2))
{
able_to_get_lock = true;
}
}
[TestMethod]
public void ThreadingModelTest()
{
Monitor.Enter(ready_lock);
Thread t1 = new Thread(new ThreadStart(GetThreadLock));
t1.Start();
Thread.Sleep(400);
Assert.IsTrue(able_to_get_lock);
}
Run Code Online (Sandbox Code Playgroud)
但如果我将锁定对象的对象类型更改为String(如下所示),则会失败:
String ready_lock = "Hello";
String thread_lock = "Hello";
Run Code Online (Sandbox Code Playgroud)
一段时间以来我一直困扰着我.谢谢 :)
我在Windows机器上本地运行1.4.2 appengine SDK.我有一个运行Django 0.96的应用程序.模板渲染使用的是django包装器
google.appengine.ext.webapp.template.render
Run Code Online (Sandbox Code Playgroud)
渲染模板.我经常使用相对路径来链接我的模板,例如
{% extends "../templates/base.html" %}
Run Code Online (Sandbox Code Playgroud)
升级到Django 1.2之后,appengine的Django 1.2 lib文件夹中的django.template.loader中的find_template方法现在在使用相对路径时引发TemplateDoesNotExist
for loader in template_source_loaders:
try:
#raises TemplateDoesNotExist name='../templates/home.html' dirs=None
source, display_name = loader(name, dirs)
return (source, make_origin(display_name, loader, name, dirs))
except TemplateDoesNotExist:
pass
raise TemplateDoesNotExist(name)
Run Code Online (Sandbox Code Playgroud)
我已经一直在单步执行Django和AppEngine代码,但看不出任何理由.任何人都可以提供更多见解吗?
谢谢,
理查德
有时我的某些集成测试会因上述消息而失败.我正在使用下面的代码来准备端口.
for(int i = 0; i < 5; i++)
{
try
{
port.Open();
if (port.IsOpen)
break;
}
catch (Exception e)
{
try
{
port.Close();
}
catch (Exception)
{}
Thread.Sleep(300);
}
}
Run Code Online (Sandbox Code Playgroud)
我的假设是,因为它不能阻止端口的当前线程(因为它会尝试关闭它),它必须是另一个线程或进程已经死亡而没有正确清理(其他测试之一 - 没有其他访问这个港口).有没有办法重置状态,SerialPort以便新线程/进程可以再次访问它?
谢谢,
理查德