c# - 如何从非控制台 ASP.Net 应用程序中捕获标准输出
问题描述
我想将日志重定向到 Docker 提供的 AWSLog 驱动程序,然后再将日志发送到 AWS Cloud Watch。AWS 日志驱动程序文档说我需要将日志发送到 STDOUT,但我的 ASP.NET 应用程序无法使用Console.WriteLine
. 实际上我根本没有收到任何编译错误,但是当我运行命令时,docker log {ContainerID}
我看不到任何嵌入在Consoel.WriteLine
语句中的日志。是否有任何等价物可以用来 STDOUT 非控制台 .net 应用程序中的日志。AWS Docker 日志驱动程序
解决方案
好消息,您可能只是在寻找Out
反过来公开.WriteLine
方法的属性。
Console.Out.WriteLine("Some log entry");
有关它的更多信息,请参阅 docs.microsoft.com 上的参考资料。
这里真正看起来是一个配置问题,并且(技术上)不是一个理想的记录选择。你说的是“非控制台应用程序”,但我肯定只是Console.WriteLine
在一个全新的 ASP.Net WebAPI 项目中运行,这很好。您是否有机会使用 .net 核心?
最后,我相信 dotnet(尤其是核心?)的推荐日志记录是通过Microsoft Extensions Logging Abstractions这意味着您可以依赖于ILogger
而不是显式Console
实现。
该Console.WriteLine
方法在 ASP.Net WebAPI (.Net Framework) 中绝对不为空,但听起来你在谈论Console.Out
为空。
如果你真的必须使用Console.WriteLine
then 调用Console.SetOut
一个有效的文本流。
StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput());
standardOutput.AutoFlush = true;
Console.SetOut(standardOutput);
推荐阅读
- spring-mvc - 在spring boot中注册成功后如何自动登录?
- c# - 如何在 App Config 文件中使用 C# 为 AWS AmazonSQSClient 设置 RegionEndPoint
- python - 在组合网络的子网络上使用两种损失
- javascript - 如何将数组项一一添加到 DOM?
- shell - 有没有办法在 csh 的每个输入中运行相同的命令?
- fortran - MPIF90 运行错误“整数读取期间出现错误值”
- node.js - 保护 Twitter Webhook
- java - 检索@SqlCall 的参数作为列表
在jdbi中 - android - Native Android 和 React Native 之间的共享数据持久化
- regex - oracle正则表达式子字符串和正则表达式替换