小编ste*_*liu的帖子

如何在Python logging.Formatter中对齐level字段

我目前正试图在我的Python记录器中正确对齐日志记录级别字段,以便输出如下:

[2011-10-14 13:47:51] [DEBUG] --- starting... (smtphandlers.py:96)
[2011-10-14 13:47:51] [INFO] --- first things first... (smtphandlers.py:97)
[2011-10-14 13:47:51] [WARNING] --- about to end... (smtphandlers.py:98)
[2011-10-14 13:47:51] [DEBUG] --- ending (smtphandlers.py:99)
Run Code Online (Sandbox Code Playgroud)

相反看起来像:

[2011-10-14 13:47:51] [   DEBUG] --- starting... (smtphandlers.py:96)
[2011-10-14 13:47:51] [    INFO] --- first things first... (smtphandlers.py:97)
[2011-10-14 13:47:51] [ WARNING] --- about to end... (smtphandlers.py:98)
[2011-10-14 13:47:51] [   DEBUG] --- ending (smtphandlers.py:99)
Run Code Online (Sandbox Code Playgroud)

第一个块的格式行是:

logging.Formatter("[%(asctime)s] [%(levelname)s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)

如果我知道最大级别长度是8(例如:CRITICAL),那么我将右对齐8个空格.我正试图弄清楚如何实现这一目标.以下操作失败,因为"%(levelname)s"超过8个字符(替换直到稍后才会发生).如果我使用"{0:> 20}".格式化"%(levelname)s"之类的东西,那么它可以工作,但这比我需要或想要的填充更多.

logging.Formatter("[%(asctime)s] [" + "{0:>8}".format"%(levelname)s" + "] --- %(message)s …
Run Code Online (Sandbox Code Playgroud)

python formatting logging

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

私有继承隐藏基类,"在此上下文中无法访问"错误

我有一个类似于以下链接中描述的问题,当我尝试在派生类中声明基类的成员时,私有继承的基类给出"在此上下文中不可访问"错误: http:// bytes .COM /主题/ C /答案/ 164246-私有继承的呈现级不可访问

在上面的例子中,使用:: X显式引用X,但如果代码位于如下函数中,该怎么办?

void fooby()
{
    class X {};

    class Y : private X {};

    class Z : public Y
    {
    public:
        X x; // compiler "inaccessible within this context" error
    };
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下你如何引用X?

如果fooby是一个结构/类,那么:: fooby :: X可以工作,但我不知道如何在上面的情况下这样做.

c++

18
推荐指数
2
解决办法
4828
查看次数

标签 统计

c++ ×1

formatting ×1

logging ×1

python ×1