小编tue*_*ist的帖子

如何将自定义日志级别添加到Python的日志记录工具中

我想为我的应用程序提供loglevel TRACE(5),因为我认为这debug()还不够.另外log(5, msg)不是我想要的.如何将自定义日志级别添加到Python记录器?

我有mylogger.py以下内容:

import logging

@property
def log(obj):
    myLogger = logging.getLogger(obj.__class__.__name__)
    return myLogger
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我以下列方式使用它:

class ExampleClass(object):
    from mylogger import log

    def __init__(self):
        '''The constructor with the logger'''
        self.log.debug("Init runs")
Run Code Online (Sandbox Code Playgroud)

现在我想打个电话 self.log.trace("foo bar")

在此先感谢您的帮助.

编辑(2016年12月8日):我改变了接受pfa的答案,即恕我直言,这是一个很好的解决方案,基于Eric S.的非常好的建议.

python logging python-logging

102
推荐指数
10
解决办法
4万
查看次数

从PHP中的成员函数访问私有变量

我从中派生了一个类Exception,基本上是这样的:

class MyException extends Exception {

    private $_type;

    public function type() {
        return $this->_type; //line 74
    }

    public function __toString() {

        include "sometemplate.php";
        return "";

    }

}
Run Code Online (Sandbox Code Playgroud)

然后,我是MyException这样派生的:

class SpecialException extends MyException {

    private $_type = "superspecial";

}
Run Code Online (Sandbox Code Playgroud)

如果我throw new SpecialException("bla")来自一个函数,捕获它,然后去echo $e,那么该__toString函数应该加载一个模板,显示它,然后实际上不返回任何回显.

这基本上就是模板文件中的内容

<div class="<?php echo $this->type(); ?>class">

    <p> <?php echo $this->message; ?> </p>

</div>
Run Code Online (Sandbox Code Playgroud)

在我看来,这绝对有用.但是,当抛出异常并尝试显示它时,我收到以下错误:

致命错误:无法访问第74行的C:\ path\to\exceptions.php中的私有属性SpecialException :: $ _ type

任何人都可以解释为什么我违反规则吗?我用这段代码做了一些非常机智的事吗?有没有更惯用的方法来处理这种情况?$_type变量的点是(如图所示)我希望根据捕获的异常类型使用不同的div类.

php oop exception

19
推荐指数
3
解决办法
5万
查看次数

用grep搜索开头和结尾的单词

如何grep以字符开头和结尾的东西

ABC-0
ABC-1
ABC-10
ABC-20
Run Code Online (Sandbox Code Playgroud)

我想要为ABC-0和ABC-1 grep -v

regex grep

12
推荐指数
3
解决办法
4万
查看次数

你推荐什么GNU替代?

想象一下,您可以自由选择像GNU make这样的工具来实现新的C++项目.你会选择什么?有没有可用的替代品?

它应该/是

  • 命令行界面
  • "容易明白
  • 易于设置默认的c ++项目
  • 可能支持src/binJava的常见分离
  • 可能不会向其他软件/库添加太多依赖项
  • 平台独立()
  • 特征:
    • 构建规则/模板,如make,但以人类可读的方式
    • 如果没有其他"Makefile",则递归地抓取目录并应用规则
    • 异常配置

注意:

GNU make没什么问题.我只是不喜欢它的语法,这些年来增长的所有东西和愚蠢的递归都会产生问题.我现在用gmake多年了.

c++ command-line build-process makefile

10
推荐指数
6
解决办法
3442
查看次数

如何通过C预处理器打印磅/哈希?

我需要帮助做以下事情:

预处理器宏标签(x)应输出"#x",例如,

#define label(x) ...
Run Code Online (Sandbox Code Playgroud)

如果我调用label(aname),输出应为"#aname"(不带引号)

我知道,以下尝试都是错误.

#define label(x) #x   // leads to "x"
#define label(x) \#x  // is \"x"
#define label(x) "#x" // is "#x" (but not the content of x") "#otto"
Run Code Online (Sandbox Code Playgroud)

它可能存在一种逃脱#(磅),但我不知道,如何逃脱......

编辑:我运行"gcc -E test -o test.html"来获取输出.重点是:如何仅使用预处理器的功能使用makro打印哈希标记(#)?

c c-preprocessor

8
推荐指数
1
解决办法
8420
查看次数

如何在变量声明中使用Bash替换

我尝试x用所有字符声明一个变量a..x.在命令行(bash)上,替换a..x没有任何刻度的作品.

$ echo {a..x}
a b c d e f g h i j k l m n o p q r s t u v w x
Run Code Online (Sandbox Code Playgroud)

但是通过x={a..x}结果以{a..x}字符串形式将其分配给变量.只有x=$(echo {a..x})作品.

问题是:这是正确的分配方式还是我必须做其他事情?

主要目的是将序列分配给数组,例如,

disks=( $(echo {a..x}) ) 
Run Code Online (Sandbox Code Playgroud)

bash

7
推荐指数
1
解决办法
1188
查看次数

获取DateTime dayOfWeek/dayOfMonth作为String

如何将星期或月份作为字符串获取?无需执行以下操作:

        DateTime now = DateTime.now();
        String dayOfWeek = null;
        switch(now.getDayOfWeek()) {
            case DateTimeConstants.MONDAY:
                dayOfWeek = "Monday";
                break;
            case DateTimeConstants.TUESDAY:
                dayOfWeek = "Tuesday";
                break;
            case DateTimeConstants.WEDNESDAY:
                dayOfWeek = "Wednesday";
                break;
            case DateTimeConstants.THURSDAY:
                dayOfWeek = "Thursday";
                break;
            case DateTimeConstants.FRIDAY:
                dayOfWeek = "Friday";
                break;
            case DateTimeConstants.SATURDAY:
                dayOfWeek = "Saturday";
                break;
            case DateTimeConstants.SUNDAY:
                dayOfWeek = "Sunday";
                break;
        }
Run Code Online (Sandbox Code Playgroud)

java jodatime

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

如何列出不包含两个不同字符串的所有文件

列出所有不包含2个不同字符串的文件

我有一个目录,其中有许多文件以模式命名,例如file1.txt

我可以列出所有不包含一个字符串的文件

grep -l "String" file*
Run Code Online (Sandbox Code Playgroud)

如何列出不包含我尝试过的两个字符串的文件?

grep -l "string1|string2" file*
Run Code Online (Sandbox Code Playgroud)

shell scripting grep

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

如何将char数组转换为基于字符串的十六进制流(ostringstream)

在C++中(在Linux上使用gcc)我想把一个byte array(vector<unsigned char>)放到a ostringstream或a中string.

我知道我可以使用,sprintf但它似乎也不是最好的使用方式char*.

顺便说一句:这个链接没有帮助

编辑:目前为止所有答案都有效.但我没有意思,我想将字节/十六进制值转换为它们的字符串表示,例如,vector<..> = {0,1,2} -> string = "000102".对不起,但重要的细节

c++ string hex ostringstream

4
推荐指数
2
解决办法
8577
查看次数

扩展Backbone模型保存

什么是最好的方式扩展model.save方法

我需要添加新方法将相同的数据发布到后端.ie:played方法应该请求(通过POST)apiurl/model/:id/played

例如:

var Game = Backbone.Model.Extend({
   baseUrl: '/games/',
   played: function(){
      this.url = this.baseUrl + this.id + '/played' 
      this.save();
   }
}); 

var game = new Game({id:3234});  //is only an example, instances are created before previuosly
game.played();
Run Code Online (Sandbox Code Playgroud)

这种方式有效,但请求是GET.此外,如果这save()不会在请求中发送所有属性,那将是完美的.

添加信息: 由于我必须与跨域api进行交互,因此我扩展了同步方法以使用JSONP.此外,我添加了一些安全说明.

//backbone sync
Backbone._sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
    //network
    options.timeout = 10000;
    options.dataType = "jsonp";  
    //security
    if(_conf.general.accessToken){
        var ak = _conf.general.accessToken, 
        url = model.url,
        linker = url.indexOf('?') === …
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js

3
推荐指数
1
解决办法
4333
查看次数