小编Mic*_*ael的帖子

django中的默认500回溯是什么,以便我可以用它来创建我自己的日志?

我想用它在我的自定义中间件类的process_exception()方法中生成html日志文件,例如:

  • 抓住了例外.
  • process_exception(request)调用.
  • process_exception调用任何函数返回默认错误html.
  • process_exception将返回的html写入django服务器正在运行的某个地方的logs文件夹.

我知道Django能够为这些异常发送电子邮件,但我宁愿不使用它.我正在使用JSON开发一个RESTful应用程序,所以返回一个json字符串表示错误500然后将html放在其他地方感觉更合适.

提前致谢.

对不起,也许我需要澄清一下:我不想创建自己的500.html,我想使用当Debug = True时django使用的那个.即生成错误文件并将其放在日志文件夹中.

感谢Mark的帮助 - 这是我对任何感兴趣的人的解决方案:

import logging
import os
import settings
import sys
import datetime

from response import get_json_response
from django.views.debug import ExceptionReporter

logging.config.dictConfig(settings.LOGGING)
LOGGER = logging.getLogger('console_logger')

class LoggingMiddleware(object):

    def process_exception(self,request,exception):
        exc_type, exc_value, exc_traceback = sys.exc_info()
        er = ExceptionReporter(request, exc_type, exc_value, exc_traceback)
        time = str(datetime.datetime.now())
        file_path = os.path.join(settings.LOG_FOLDER, "{}.html".format(time))
        LOGGER.error("Writing error 500 traceback to %s" % file_path)
        file_handle = open(file_path,'w')
        file_handle.write(er.get_traceback_html())
        file_handle.close()
        return get_json_response(500,"HTTP Error 500: Internal Server Error")
Run Code Online (Sandbox Code Playgroud)

代码拦截任何异常,使用sys模块和djangos默认错误模板生成格式良好的回溯/异常信息页面,然后在返回JSON对象之前将其放在日志文件夹中,表明存在http错误500.

django django-templates django-middleware django-views django-errors

11
推荐指数
2
解决办法
1795
查看次数

是否可以将第三方Objective-C代码导入Swift游乐场?

正如我在这里建议的那样,我已经能够通过桥接头将我现有的Objective-C代码导入到.swift文件中.到目前为止,我一直无法用一个快速的游乐场做类似的东西 - 它似乎没有像swift文件那样识别标题.

有趣的是,并且可能暗示对我的问题的否定是游乐场似乎没有像.swift/.m那样分享目标成员资格的概念.

任何人都可以使用这个或者不同的机制取得任何成功吗

ios swift swift-playground

11
推荐指数
1
解决办法
6465
查看次数

是否可以使用xcode 5在命令行上运行单个测试用例/测试类?

我可以使用以下命令运行所有单元测试:

xcodebuild test -workspace Project.xcworkspace -scheme Scheme -sdk iphonesimulator7.0 -destination platform='iOS Simulator',OS=7.0,name='iPhone Retina (4-inch)'
Run Code Online (Sandbox Code Playgroud)

有没有什么我可以传递到这个来运行单独的单元测试/类,就像你可以使用Xcode UI一样?

干杯.

xcode objective-c xcode5

10
推荐指数
1
解决办法
2635
查看次数

是否可以在objective-c中在运行时注册KVO相关键?

改变+(NSSet*) keyPathsForValuesAffecting<Key>运行时的输出是否会影响从属密钥?换句话说,这个方法被调用的频率/时间是多少?

objective-c

5
推荐指数
1
解决办法
198
查看次数

使用带盐状态的 ssh 代理转发

所以我的流浪文件中有以下内容:

config.ssh.forward_agent = true
Run Code Online (Sandbox Code Playgroud)

以及以下盐状态:

git+ssh://git@bitbucket.org/xxx/repo.git:
  git.latest:
    - rev: rest
    - target: /home/vagrant/src
Run Code Online (Sandbox Code Playgroud)

但是,当执行此盐状态时,我收到公钥错误。

令人讨厌的是,如果我git+ssh://git@bitbucket.org/xxx/repo.git从我的实例中手动执行 git clone ,一切正常。有任何想法吗?

vagrant salt-stack

5
推荐指数
1
解决办法
492
查看次数

UINavigationController'损坏的导航栏'问题

我遇到严重的问题让我的导航控制器工作,并在本网站上尝试了几乎所有相关的问题.

我的问题是,当我以编程方式执行segue时,导航栏中似乎存在转换,但视图不会更改.我看到以下错误:

2013-10-22 13:47:30.059 App[2236:a0b] nested push animation can result in corrupted navigation bar
2013-10-22 13:47:30.411 App[2236:a0b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2013-10-22 13:47:30.501 App[2236:a0b] Unbalanced calls to begin/end appearance transitions for 
Run Code Online (Sandbox Code Playgroud)

我的故事板看起来像这样:

在此输入图像描述

在LoginViewController中,我们根据某些条件执行segue:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear];
    NSString* appState = [AppConfig getAppState];
    if ([appState isEqualToString:APP_STATE_WAITING]) {
        [self performSegueWithIdentifier:@"Load" sender:self];
    }
    else if ([appState isEqualToString:APP_STATE_REGISTRATION_AVAILABLE]) {
        [self performSegueWithIdentifier:@"SignUp" sender:self];
    }
}
Run Code Online (Sandbox Code Playgroud)

在LoadingViewController中,我们等待来自Web服务的响应,然后执行以下操作:

- (void)segueToWaitingList:(NSUInteger)behind inFront:(NSUInteger)inFront
{
    [MosaycOptions setAppState:APP_STATE_WAITING]; …
Run Code Online (Sandbox Code Playgroud)

xcode cocoa-touch objective-c interface-builder ios

2
推荐指数
1
解决办法
1万
查看次数

使用perl的CGI :: Cookie-> fetch获取cookie时丢失'+'字符

Cookie有价值:

V7S9qwSUTlYYX0gTVO5edmBVyPZkNyMecr6LuABwN3KSgwTyasj1+0pGiN2OJ6s4Jja9ma+BJ0GCCiCFUc8k/uNk/4hIwsZv0KyHVVjOHFHtOq+PHMFaBKg5wRfXReI3LDmiDnIM6h0Z9hrEO5wYha/RadNqIqfJzUTOQl7q33RqQGcx/aLoiizm3tHs05InbAkUqwusJ1E4HFVLFqyvhEunFWrRO1Y/TfrZR7GvCzNiVYGO6O6E1yhup7CAaM6Lc22TjxNfKp1jGJy4NMQUvbMqCOlWZ75sFA4H3jeuNg0RcIC2zCT7l1JU8ZECGPDqf75FoL4qi+9rO0mgdEGgZL3cFk3dSyIApxXYeAR7RlKGsB0vqd4zxdSjTz5LRWK++SPyVNBsKMcVFfHDv7tv4PAUhK4sDT7bfBow9lIwV1f8slchXEcCgLNI2TYZsr/j/GoqnSb9mxp7VGmL7Z4s7cqWdpNsXEpQ3dMM7k4n1lVKOk2qCrzBrqvJRE7mNeaAz6RVjQuroOj0tJOhLUsZeukVbCxORY6k01fNgwPc1v7xGh7y0x6906WOHlcgti4+ofaSxG4AxwWeaf55loL6vN5d5/UEICGlRuxEjpM8X5og2RYhxr/qQWGVBbiZFBkDDd7esG3rXML63cRJ011Du03UzoS2DxKhFeDmrJM7QinuDEAr0UF1p90kj6hN+PqYqfsRONFXjUS8BqjAMJVEoVnnX5uiAAu1MCZc/xDNDzhu10eiib4Tr+7y6yePw7TQm+bunMMFqYVSMMCIapiAsCS70B96UPSgRQHRbzNzeee9ulDvdtXFxdswf89Bi6LwMaPNdcVdq/Cd5KMziRzwqsCli8jkFF7qATgo5E9wU9OueGPlXCnJzdUBu2BG1JaJEZcsDdfczD3vfrVZXy/xQ66OMbwWUn/R02mr3LTiGU5T6pbcsTNbTQyWwc9gNZsjshqBNh5oJ9ScMBI947Gkatf3fkhlH1NJpXX0GNPQ6OqSg+RALq7EEqBRmy4pszu/9BDmmKck6luJzihaAfeFyZC/SwlcUbg/epGmOSAlJRRUBckj1ufuBFMKKd6hkn1qaZUX1fPrCfNVJ7pzVT66tRurqF4HvX8JIKiC/BTPN5ZAw5fkIUJKn+H7x5o1XG9WMFO/AQ/lUVstaB8/hjY+JC6bZapKwsNj
Run Code Online (Sandbox Code Playgroud)

在perl中使用:

%cookies = CGI::Cookie->fetch;
$ticket = $cookies{$ticketKey}->value;
print STDERR $ticket;
Run Code Online (Sandbox Code Playgroud)

我明白了:

V7S9qwSUTlYYX0gTVO5edmBVyPZkNyMecr6LuABwN3KSgwTyasj1 0pGiN2OJ6s4Jja9ma BJ0GCCiCFUc8k/uNk/4hIwsZv0KyHVVjOHFHtOq PHMFaBKg5wRfXReI3LDmiDnIM6h0Z9hrEO5wYha/RadNqIqfJzUTOQl7q33RqQGcx/aLoiizm3tHs05InbAkUqwusJ1E4HFVLFqyvhEunFWrRO1Y/TfrZR7GvCzNiVYGO6O6E1yhup7CAaM6Lc22TjxNfKp1jGJy4NMQUvbMqCOlWZ75sFA4H3jeuNg0RcIC2zCT7l1JU8ZECGPDqf75FoL4qi 9rO0mgdEGgZL3cFk3dSyIApxXYeAR7RlKGsB0vqd4zxdSjTz5LRWK  SPyVNBsKMcVFfHDv7tv4PAUhK4sDT7bfBow9lIwV1f8slchXEcCgLNI2TYZsr/j/GoqnSb9mxp7VGmL7Z4s7cqWdpNsXEpQ3dMM7k4n1lVKOk2qCrzBrqvJRE7mNeaAz6RVjQuroOj0tJOhLUsZeukVbCxORY6k01fNgwPc1v7xGh7y0x6906WOHlcgti4 ofaSxG4AxwWeaf55loL6vN5d5/UEICGlRuxEjpM8X5og2RYhxr/qQWGVBbiZFBkDDd7esG3rXML63cRJ011Du03UzoS2DxKhFeDmrJM7QinuDEAr0UF1p90kj6hN PqYqfsRONFXjUS8BqjAMJVEoVnnX5uiAAu1MCZc/xDNDzhu10eiib4Tr 7y6yePw7TQm bunMMFqYVSMMCIapiAsCS70B96UPSgRQHRbzNzeee9ulDvdtXFxdswf89Bi6LwMaPNdcVdq/Cd5KMziRzwqsCli8jkFF7qATgo5E9wU9OueGPlXCnJzdUBu2BG1JaJEZcsDdfczD3vfrVZXy/xQ66OMbwWUn/R02mr3LTiGU5T6pbcsTNbTQyWwc9gNZsjshqBNh5oJ9ScMBI947Gkatf3fkhlH1NJpXX0GNPQ6OqSg RALq7EEqBRmy4pszu/9BDmmKck6luJzihaAfeFyZC/SwlcUbg/epGmOSAlJRRUBckj1ufuBFMKKd6hkn1qaZUX1fPrCfNVJ7pzVT66tRurqF4HvX8JIKiC/BTPN5ZAw5fkIUJKn H7x5o1XG9WMFO/AQ/lUVstaB8/hjY JC6bZapKwsNj
Run Code Online (Sandbox Code Playgroud)

注意+字符的丢失?可能是什么导致了这个?我们使用perl v5.8.5和Apache/2.0.52

apache cookies perl cgi mod-perl

0
推荐指数
1
解决办法
108
查看次数