标签: system.diagnostics

如何为 HttpClient 调用配置网络跟踪 Dotnet 核心?

根据https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-configure-network-tracing 上的参考文件

我们可以在 web.config 或任何其他配置文件中设置它,我们可以获得详细的 system.net 跟踪、HttpClient调用的数据包跟踪以及调用中的任何类型的问题HttpClient都可以在跟踪中捕获,无论是证书、TLS 还是其他任何东西。

但是,我们是否有类似的 dotnet 核心/标准实现,可以在 web 应用程序或控制台应用程序/库中使用?

dotnet 框架的配置:

<configuration>  
  <system.diagnostics>  
    <sources>  
      <source name="System.Net" tracemode="includehex" maxdatasize="1024">  
        <listeners>  
          <add name="System.Net"/>  
        </listeners>  
      </source>  
      --------------
----------------------
Run Code Online (Sandbox Code Playgroud)

c# system.diagnostics dotnet-httpclient .net-core .net-standard

9
推荐指数
2
解决办法
5111
查看次数

System.Diagnosis.TextWriterTraceListener没有将任何日志写入文件系统的问题

为了解决通过未发送电子邮件的smtp-server发送电子邮件的问题,我建议使用System.Diagnosis.TextWriterTraceListener启用日志记录,以跟踪与smtp-server的通信以跟踪任何错误.我将以下内容添加到节点下的web.config中:

<system.diagnostics>
      <trace autoflush="true" />
      <sources>
        <source name="System.Net" >
          <listeners>
            <add name="MyTraceFile"/>
          </listeners>
        </source>

        <source name="System.Net.Sockets">
          <listeners>
            <add name="MyTraceFile"/>
          </listeners>
        </source>
      </sources>

      <sharedListeners>
        <add
          name="MyTraceFile"
          type="System.Diagnostics.TextWriterTraceListener"
          initializeData="System.Net.trace.log"                />
      </sharedListeners>

      <switches>
        <add name="System.Net" value="Verbose" />
        <add name="System.Net.Sockets" value="Verbose" />
      </switches>
    </system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

我在我的开发机器上试了一下它工作得很好!我可以轻松地读出与smtp-server的完整通信.但是,在生产环境(在Windows 2003 Server中的IIS 6上运行)中,它根本不起作用.没有日志写入文件系统.我的第一个想法是,ASP.NET工作进程帐户(NETWORK SERVICE)可能没有足够的权限写入指定位置的文件系统.我修好了,但仍然没有记录.其次,我认为文件夹可能设置为"只读"并修复了该文件夹.但我仍然没有写日志.

有谁知道问题可能是什么?或者也许就如何解决这个问题提出一些建议?Thanx提前!

.net asp.net logging system.diagnostics

8
推荐指数
1
解决办法
9233
查看次数

DefaultTraceListener的性能影响

使用System.Diagnostics跟踪时,是否在发布模式下不在生产 ASP.NET应用程序上删除"默认"跟踪侦听器时会产生显着(可测量)性能影响,在编译时定义常量但在运行时没有附加调试器?TRACE

为了澄清,问题是"默认"跟踪侦听器对使用其他跟踪侦听器的应用程序的影响,而不是System.Diagnostics跟踪的替代方案.

没有连接调试器时,是否有任何衡量默认跟踪侦听器的影响?是否已经对生产中的影响做了任何基准测试,从而忽略了代码中的"remove"元素:

<configuration>
<system.diagnostics>
  <trace autoflush="false" indentsize="4">
    <listeners>
      <remove name="Default" />
      <add name="myListener"  type="System.Diagnostics.TextWriterTraceListener"    initializeData="c:\myListener.log" />
    </listeners>
  </trace>
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这个问题与.NET跟踪不同:什么是"默认"监听器?从某种意义上说,当在Visual Studio下运行并更新调试UI时,其他问题集中在默认侦听器的影响上,而这个问题主要关注生产环境中的发布代码.

c# performance trace system.diagnostics

8
推荐指数
1
解决办法
3161
查看次数

Process.Start没有Extension的文件

我们已经知道它是如何System.Diagnostics.Process.Start("C:\filename.png")工作的,但如果文件名不以扩展名结尾怎么办?

如何使用与扩展名相关联的默认程序运行没有扩展名的文件.png名?

就像是:

openFile("C:\filename","PNG")
Run Code Online (Sandbox Code Playgroud)

.net vb.net registry system.diagnostics file

8
推荐指数
1
解决办法
1219
查看次数

C#VS2010在应用程序中确定是否正在调试

是否有机会在C#应用程序中确定它当前是否正在调试?这个想法是忽略例如超时,或提供额外的信息.

为了清楚说明,我不是在讨论条件编译器标志DEBUG.这允许我决定如何编译代码.它没有提供有关它是否在调试器中运行的信息.

我需要在运行时决定,而不是在编译时.

c# debugging system.diagnostics visual-studio-2010

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

假设在 GPG cmd 中始终信任是是/真

我使用 GPG 在 ASP.NET、C# 中加密文件。我的代码使用 ProcessStartInfo 执行命令,然后执行 gpg.exe,但我遇到了问题。GPG 要求我使用“y”作为选项来授权始终信任。我也尝试使用“是”(正如 GPG 帮助中所建议的,对所有问题都假设“是”),但这也不起作用。

运行 GPG 的字符串是:

"gpg --armor --output fileOutput.gpg --recipient secure@site.com --encrypt fileInput.xml --always-trust --yes"
Run Code Online (Sandbox Code Playgroud)

提示的问题是:

不确定密钥是否属于用户 ID 中指定的人。如果你真的知道你在做什么,你可以回答下一个问题是

还是要用这个键?

我怎样才能完全忽略这个问题,或者在没有提示确认的情况下强制答案为真(“是”)?

谢谢。

c# asp.net cmd system.diagnostics gnupg

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

如何在调用Process.GetProcessById之前检查进程是否仍在运行?

在.NET中Process.GetProcessById,如果没有运行具有此ID的进程,则抛出异常.如何安全地调用此方法,以便它不会抛出异常?我在想类似的东西

if(Process.IsRunning(id)) return Process.GetProcessById(id);
else return null; //or do something else
Run Code Online (Sandbox Code Playgroud)

但是找不到任何检查ID的方法,除了可能获取所有正在运行的进程并检查列表中是否存在id.

.net c# system.diagnostics

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

使用"new()和".StartNew()"创建新实例有什么区别?

来自我的"回答"问题"任务中的秒表似乎是所有任务中的附加物,想要测量任务间隔"

创建新的秒表实例之间可能存在以下区别:

Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();
Run Code Online (Sandbox Code Playgroud)

Stopwatch timer = new Stopwatch();
timer.Start();  
Run Code Online (Sandbox Code Playgroud)

隐含的子问题:
为什么StartNew()提供方法?

.net c# system.diagnostics stopwatch

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

是否有可能在ETW中继承EventSource?

我希望能够声明一个EventSource,它至少有几种方法,默认情况下提供常规的日志记录工具.

例如

  • 信息()
  • 警告()
  • 错误()

此外,我希望能够在每个服务中定义一个特定的事件源,该事件源继承自提供上述内容的基类.目前,创建清单的EventRegister.exe应用程序抱怨必须密封事件源.

我做错了吗?如果是这样,我怎样才能实现上述目标?查看示例代码:

    public class ETWBase : EventSource
    {
        [Event(1, Channel = EventChannel.Admin, Message = "Info Message: {0}")]
        public void Info(string message) { this.WriteEvent(1); }

        [Event(2, Channel = EventChannel.Debug, Message = "Debug Message: {0}")]
        public void Trace(string message) { this.WriteEvent(2); }

    }

    [EventSource(Name = "ABC-MyEtwServiceEventSource")]
    public sealed class MyEtwServiceEventSource : ETWBase
    {
        public static MyEtwServiceEventSource Log = new MyEtwServiceEventSource();

        [Event(3, Channel = EventChannel.Debug, Message = "My specific Message: {0}")]
        public void Trace(string message) { this.WriteEvent(3); } …
Run Code Online (Sandbox Code Playgroud)

.net system.diagnostics etw etw-eventsource

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

System.Diagnostics.Trace是否有任何性能降级?

我正在寻找一个简单的本机.NET错误日志记录解决方案.我对使用log4net,Elmah或任何其他日志库不感兴趣.以下是我计划使用的内容.我的问题是我的网站上的性能是至关重要的,这个流程是否会引入任何性能问题?

Global.asax中

protected void Application_Start(object sender, EventArgs e)
        {
            GlobalFilters.Filters.Add(new HandleExceptionsAttribute());
        }
Run Code Online (Sandbox Code Playgroud)

处理异常属性:

public sealed class HandleExceptionsAttribute : HandleErrorAttribute
    {
        private void TraceError(Exception _this)
        {
            Trace.TraceError("{0} Exception {1}", DateTime.Now.ToString("M/d/yyyy h:mmtt"), _this);
        }

        public override void OnException(ExceptionContext filterContext)
        {
            var ex = filterContext.Exception;
            TraceError(ex);
            Task.Run(() =>
            {
                using (var msg = new MailMessage(ConfigurationManager.AppSettings["SendErrorsFrom"], ConfigurationManager.AppSettings["SendErrorsTo"]))
                {
                    msg.Subject = ex.Message;
                    msg.Body = ex.StackTrace;
                    using (var smtp = new SmtpClient())
                        smtp.Send(msg);
                }
            });
        }
    }
Run Code Online (Sandbox Code Playgroud)

web.config中:

  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="textWriterListener" type="System.Diagnostics.TextWriterTraceListener" …
Run Code Online (Sandbox Code Playgroud)

c# trace system.diagnostics asp.net-mvc-5

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