在我目前的项目中,有数千个代码行,如下所示:
logging.info("bla-bla-bla")
Run Code Online (Sandbox Code Playgroud)
我不想改变所有这些行,但我会改变日志行为.我的想法是将根记录器更改为其他Experimental记录器,该记录器由ini-file配置:
[loggers]
keys = Experimental
[formatter_detailed]
format = %(asctime)s:%(name)s:%(levelname)s %(module)s:%(lineno)d: %(message)s
[handler_logfile]
class = FileHandler
args = ('experimental.log', 'a')
formatter = detailed
[logger_Experimental]
level = DEBUG
qualname = Experimental
handlers = logfile
propagate = 0
Run Code Online (Sandbox Code Playgroud)
现在设置新的根记录器是由这段代码完成的:
logging.config.fileConfig(path_to_logger_config)
logging.root = logging.getLogger('Experimental')
Run Code Online (Sandbox Code Playgroud)
重新定义根记录器是否安全?也许有更方便的方法?
我试图使用谷歌并查看stackoverflow问题,但我没有找到答案.
有一些应用程序域(例如GameDev),其中应使用随机值创建许多函数以生成其输出.其中一个例子如下:
def generate_key(monster_key_drop_coef):
key_letters = string.ascii_uppercase
rand = random.random()
if monster_key_drop_coef < rand:
return None
button = {}
button["type"] = random.choice([1,2,3])
button["letter"] = random.choice(key_letters)
return button
Run Code Online (Sandbox Code Playgroud)
此函数基于多个随机操作生成项目的丢弃.如果要自动验证此功能的正确性,则会出现此问题.生成的值不是确定性的,并且回归测试的编写似乎是不可能的.
我的问题是:
我使用list comprehension将数据库行从元组列表转换为映射列表.有一天,我在我的数据库表中添加了一些新列,忘了在任何地方更改代码.因此我发现了一个奇怪的效果:数据库行成为一个空列表.
erl控制台中的代码示例:
> DbRows = [{1, 1, 1}, {2, 2, 2}].
[{1,1,1},{2,2,2}]
> [#{<<"col1">> => Col1, <<"col2">> => Col2} ||{Col1, Col2} <- DbRows].
[]
Run Code Online (Sandbox Code Playgroud)
为什么Erlang不会产生异常错误:在这种情况下,右手边值不匹配?
此代码是否正常,或者某些其他语法是否适合执行此类数据转换?
在我目前的项目中,我主动使用redis用于各种目的.当前应用有2个redis数据库:
一切似乎都是正确的,每个人都很开心.
但是,当我开始在我的应用程序中实现新功能时,我发现我需要将一组用户的朋友与一组在线用户相交.这些集存储在不同的redis数据库中,除了更改应用程序体系结构并将所有键移动到一个名称空间(数据库)之外,我还没有发现在redis中执行此任务的任何可能性.
有没有办法使用来自多个数据库的数据在redis中执行某些命令?或者我的redis用例是错误的,我必须修复系统架构?