通过 My.Application.Log
和 My.Log
对象,可以轻松地将日志记录和跟踪信息写入日志。
如何记录消息
首先,通过日志的 Switch 属性的 TraceSource 属性检查消息的严重性。 默认情况下,只有严重性级别为“信息”及以上的消息才会传递到日志的 TraceListener
集合中指定的跟踪侦听器。 然后,每个侦听器将消息的严重性与侦听器 Switch 的属性进行比较。 如果消息的严重性足够高,侦听器会写出消息。
下图演示如何将写入 WriteEntry
方法的消息传递到日志的跟踪侦听器的 WriteLine
方法:
可以通过更改应用程序的配置文件来更改日志和跟踪侦听器的行为。 下图显示了日志部分与配置文件之间的对应关系。
记录消息的位置
如果程序集没有配置文件,则 My.Application.Log
和 My.Log
对象通过 DefaultTraceListener 类写入应用程序的调试输出。 此外,My.Application.Log
对象通过 FileLogTraceListener 类将数据写入程序集的日志文件,而 My.Log
对象通过 WebPageTraceListener 类将数据写入 ASP.NET 网页的输出。
在调试模式下运行应用程序时,可以在 Visual Studio 输出窗口中查看调试 输出 。 若要打开 “输出 ”窗口,请单击 “调试” 菜单项,指向 Windows,然后单击“ 输出”。 在“输出”窗口中,从“显示输出”框中选择“调试”。
默认情况下, My.Application.Log
在用户应用程序数据的路径中写入日志文件。 可以从FullLogFileName对象的DefaultFileLogWriter属性获取路径。 该路径的格式如下所示:
BasePath
\CompanyName
\ProductName
\ProductVersion
一个典型的BasePath
值如下所示。
C:\Documents and Settings\username
\Application Data
的值CompanyName
ProductName
以及ProductVersion
来自应用程序的程序集信息。 日志文件名称的形式是 AssemblyName.log,其中 AssemblyName 是程序集的文件名,没有扩展名。 如果需要多个日志文件(例如当应用程序尝试写入日志时原始日志不可用时),则日志文件名称的表单是 AssemblyName-迭代.log,其中为 iteration
正 Integer
数。
可以通过添加或更改计算机和应用程序的配置文件来替代默认行为。 有关详细信息,请参阅 演练:更改 My.Application.Log 写入信息的位置。
配置日志设置
该 Log
对象具有一个没有应用程序配置文件的默认实现,app.config。若要更改默认值,必须使用新设置添加配置文件。 有关更多信息,请参见 Walkthrough: Filtering My.Application.Log Output。
日志配置部分位于 <system.diagnostics>
节点当中,该节点位于 app.config 文件的 <configuration>
节点之下。 日志信息在多个节点中定义:
对象的
Log
侦听器在名为 DefaultSource 的<sources>
节点中定义。对象的
Log
严重性筛选器在名为 DefaultSwitch 的<switches>
节点中定义。日志侦听器定义在
<sharedListeners>
节点中。
以下代码显示了<sources>
、<switches>
和<sharedListeners>
节点的示例:
<configuration>
<system.diagnostics>
<sources>
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"
/>
</sharedListeners>
</system.diagnostics>
</configuration>
部署后更改日志设置
开发应用程序时,其配置设置存储在 app.config 文件中,如上面的示例所示。 部署应用程序后,仍可以通过编辑配置文件来配置日志。 在基于 Windows 的应用程序中,此文件的名称是 applicationName.exe.config,并且它必须与可执行文件位于同一文件夹中。 对于 Web 应用程序,这是与项目关联的 Web.config 文件。
当应用程序首次执行创建类实例的代码时,它会检查配置文件中有关该对象的信息。 首次访问Log
对象时,这种情况会发生在Log
对象上。 系统仅在任何特定对象中检查配置文件一次, 这是应用程序首次创建该对象时。 因此,可能需要重启应用程序,使更改生效。
在已部署的应用程序中,通过在应用程序启动之前重新配置开关对象来启用跟踪代码。 通常,这涉及到打开和关闭开关对象,或者通过更改跟踪级别,然后重启应用程序。
安全注意事项
将数据写入日志时,请考虑以下事项:
避免泄露用户信息。 确保应用程序仅将已批准的信息写入日志。 例如,应用程序日志可以接受包含用户名,但不能包含用户密码。
确保日志位置安全。 任何包含潜在敏感信息的日志都应存储在安全的位置。
避免误导性信息。 通常,应用程序应在使用该数据之前验证用户输入的所有数据。 这包括将数据写入应用程序日志。
避免拒绝服务。 如果应用程序将太多信息写入日志,则它可以填充日志或使查找重要信息变得困难。