小编DoN*_*rkO的帖子

“thread._local”对象没有属性

我试图通过添加上下文过滤器来更改日志记录格式。我的格式是这样的

FORMAT = "%(asctime)s %(VAL)s %(message)s"
Run Code Online (Sandbox Code Playgroud)

这是我用来在格式中设置 VAL 的类。

class TEST:
  def __init__(self, val):
    self.test_var=threading.local()
    self.test_var.value=val
  def filter(self,record):
    record.VAL=self.test_var.value
    return True
  def setValue(self,val)
    self.test_var.value=CMDID
Run Code Online (Sandbox Code Playgroud)

它在单线程环境中工作正常,但对于某些多线程环境,我收到错误

<Fault 1: "exceptions.AttributeError:'thread._local' object has no attribute 'value'">
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里有什么问题??以及如何纠正?

python logging multithreading thread-exceptions

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

将List <>插入SQL Server表

我有一个实体,Report其值我想插入数据库表.Report必须插入以下属性:

reportID - int
RoleID - int
Created_BY = SYSTEM(default)
CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

现在的问题是第二个属性.我有一个包含LIST<ROLES>属性的报告.ROLES是一个明确定义的实体,有一个ID和一个NAME.从这个列表中,我必须提取每个角色并将每个角色的ID插入表中.

所以我的查询目前看起来如下:

INSERT INTO REPORT_MARJORIE_ROLE(REPORT_ID, ROLE_ID, CREATED_BY, CREATED)
VALUES({0}, {1}, 'SYSTEM', CURRENT_TIMESTAMP)
Run Code Online (Sandbox Code Playgroud)

我解析这些值的C#代码如下:

try
{
    StringBuilder _objSQL = new StringBuilder();
    _objSQL.AppendFormat(Queries.Report.ReportQueries.ADD_NEW_ROLES, report.ID, "report.MarjorieRoles.Add(MarjorieRole")); 
    _objDBWriteConnection.ExecuteQuery(_objSQL.ToString());
    _objDBWriteConnection.Commit();
    _IsRolesAdded = true;
}
Run Code Online (Sandbox Code Playgroud)

所以请指导我如何从C#函数添加角色

c# sql-server asp.net

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

Python日志处理程序

我想使用ContextFiltering将用户定义的变量添加到记录器格式.我的代码如下:

import logging
import logging.handlers
CMDID='TEST'

class ContextFilter(logging.Filter):
  def filter(self,record):
    record.CMDID=CMDID
    return True

FORMAT='%(asctime)s [%(CMDID)s] - %(message)s'
logger=logging.getLogger("Test")
fh=logger.handlers.RotatingFileHandler("testing.log",maxBytes=1024,backupCount=5)
fh.setlevel(logging.DEBUG)
fh.setFormatter(logging.Formatter(FORMAT))
logger.addHandler(fh)
logger.addFilter(ContextFilter())
logger.warning("WTH")
Run Code Online (Sandbox Code Playgroud)

当我不使用文件处理程序并只使用basicConfig进行格式化时,代码工作正常.但是在添加旋转文件处理程序时,我收到错误

Traceback (most recent call last):
Line 16, in <module>
fh=logger.handlers.RotatingFileHandler("testing.log",maxBytes=1024,backupCount=5)
AttributeError: 'list' object has no attribute 'RotatingFileHandler'
Run Code Online (Sandbox Code Playgroud)

现在我也尝试过使用LoggerAdapters类,但它也会引发奇怪的错误,在进一步调查中我发现它的文档可能存在一些问题.

任何人都可以帮我解决这个问题,并建议我使用这个FileHandler在我的记录器中有效地添加上下文用户定义的信息.

PS我已经尝试过python doc中给出的方法没有用

python logging

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