小编And*_*rew的帖子

跨多个文件共享Python记录器

我有一个Python应用程序,其文件结构类似于以下内容:

/Project
    file1.py
    file2.py
    file3.py
    ...
Run Code Online (Sandbox Code Playgroud)

该应用程序正在CentOS 6环境中运行,因此正在使用Python 2.6。

我感兴趣的是建立一种通用的日志记录机制,其中每个文件的日志语句都将写入磁盘上的同一日志文件。这些python文件通常是从命令行执行的,彼此之间有些独立。我测试了以下文档中的一个建议(在此处链接):

log = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

我发现,所有日志行都将被列为from __main__,而不管log语句来自哪个文件。换句话说,我无法确定给定日志行来自哪个文件。

我希望可以得到一个日志文件,其内容类似于以下内容:

2017-01-17 10:48:47,446 - file1 - DEBUG - this is from file1
2017-01-17 10:48:47,447 - file2 - DEBUG - this is from file2
2017-01-17 10:48:47,447 - fiel3 - DEBUG - this is from file3
Run Code Online (Sandbox Code Playgroud)

在上面,我将执行:

log.debug("this is from file1")
Run Code Online (Sandbox Code Playgroud)

file1.py和其他文件类似的日志行,替换日志声明适当的文字。

我目前正在使用以下设置日志记录:

########################################
# Setup Logging
########################################
LOG_FILENAME = 'app.log'
# Set up a specific logger with our desired output level …
Run Code Online (Sandbox Code Playgroud)

python logging

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

我应该保持长时间运行的线程裸露还是使用执行器?

我正在开发一个使用多个长时间运行的工作线程的流式java应用程序。应用程序接收数据、处理数据,然后使用其 SDK 将其发送给第三方。有一个Engine类接收数据并将其提交给Workers。只要应用程序运行,工作线程就会存在,这可能是几个月甚至几年。

我已经包含了代表这个问题的关键部分的示例代码。

import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BarEngine implements Engine
{
   static Logger log = LoggerFactory.getLogger(BarEngine.class);

   private static final int WORKER_COUNT = 5;
   private BlockingQueue<Map<String, Object>> queue;

   private FooWorker[] workers = new FooWorker[WORKER_COUNT];

   public BarEngine()
   {
      for (int i = 0; i < WORKER_COUNT; i++)
      {
         workers[i] = new FooWorker(i, queue);
         workers[i].start();
      }
   }

   // From Engine Interface
   @Override
   public void sendEvent(final Map<String, Object> data)
   {
      try …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

Jackson:检查 ArrayNode 是否包含 JsonNode

我在 Java 应用程序中使用Jackson JSON 库及其树模型系统 ( JsonNode)。在此,我需要检查一个是否ArrayNode包含给定的JsonNode. 我一直在寻找通过JavaDoc中,我没有看到任何形式的.contains()对方法ArrayNode。我最终自己编写了一个包含方法:

   public static boolean arrayNodeContains(ArrayNode arrayNode, JsonNode node) {
      Stream<JsonNode> nodeStream = StreamSupport.stream(arrayNode.spliterator(), false);
      return nodeStream.anyMatch(j -> j.equals(node));
   }
Run Code Online (Sandbox Code Playgroud)

单元测试:

   @Test
   public void testArrayNodeContains()
         throws IOException
   {
      ObjectMapper mapper = new ObjectMapper;

      String arrayJsonString = "[{\"foo\":\"bar\"},{\"foo\":\"baz\"},{\"baz\":\"bar\"}]";
      String nodeTrueJsonString = "{\"foo\":\"bar\"}";
      String nodeFalseJsonString = "{\"foo\":\"brains\"}";
      List<Object> list = mapper.readValue(arrayJsonString, List.class);
      ArrayNode arrayNode = mapper.valueToTree(list);

      Map<String, Object> nodeTrueMap = mapper.readValue(nodeTrueJsonString, Map.class);
      JsonNode nodeTrue …
Run Code Online (Sandbox Code Playgroud)

java jackson objectmapper jsonnode

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

如何为 Zip 部署到 Azure Functions 创建本地 zip 文件

假设我有一个目录“foo”,其中包含我的 Azure 函数项目,它是用 TypeScript 构建的。我的结构类似于Azure Function的JavaScript 文档中描述的结构(TypeScript 文件夹结构与 JavaScript 文件夹结构非常相似)。我现在想要创建一个可以使用Zip 部署机制发布到 Azure 的 zip 文件。如何手动创建 zip 文件,然后将其发布到 Azure Functions?

注意:我使用Azure Function Core Tools引导项目并在 macOS 上使用 Visual Studio Code 进行开发

azure-functions

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

Azure Kusto - 在来自跟踪的消息字段上使用 extract()

我使用 Azure Log Analytics 作为 Azure Application Insights 的一部分。我正在尝试编写一些 Kusto 查询来解析一些使用 Application Insights Javascript SDK 生成的日志记录。以下是一些示例消息:

"index.ts: imports: 1556.916ms"
"index.ts: imports: 110.486ms import { } from '@azure/keyvault-secrets'"
"index.ts: imports: 110.396ms import { } from '@azure/event-hubs'"
"index.ts: imports: 110.023ms import { } from 'applicationinsights'"
"index.ts: imports: 0.131ms import { } from '@azure/functions'"
Run Code Online (Sandbox Code Playgroud)

在 Azure Application Insights 内的 Log Analytics 中,我尝试使用extract(). 到目前为止,我的 Kusto 查询看起来像:

traces
| where message contains "imports" 
| extend file = extract("^.+\.ts", 1, message)
| sort by …
Run Code Online (Sandbox Code Playgroud)

azure azure-application-insights azure-data-explorer

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