日志

作者: 灭蒙鸟 | 来源:发表于2017-02-25 17:58 被阅读192次

layout: docs-default

日志

IdentityServer有两个日志相关特性,开发时日志和生产环境事件 (详情).
开发时日志有大量输出,在开发者定制IdentityServer时非常有用,在学习IdentityServer时也可以了解IdentityServer内部逻辑。输出里面会带有一些敏感信息(比如密码什么的),不可以用在生产环境。

IdentityServer 使用 LibLog 做日志.
Liblog自动挑选下面的日志库进行日志:

  • NLog
  • Enterprise Library
  • SeriLog
  • Log4Net
  • Loupe

IdentityServer3本身没有任何日志配置,只需要按照上面的日志库的要求配置托管程序就好。

诊断配置

LoggingOptions 类有下面的配置选项:

  • EnableWebApiDiagnostics
    • 启用后,Web Api内部诊断信息会输出到日志库
  • WebApiDiagnosticsIsVerbose
    • 启用后,会输出Web API的详细(Verbose)诊断信息。
  • EnableHttpLogging
    • 启用后,HTTP请求和响应信息会被输出到日志
  • EnableKatanaLogging
    • 启用后,Katana诊断信息会输出到日志库。(在调试第三方登陆时比较有用.)

例子: 使用Serilog输出日志到 System.Diagnostics tracing

下面的例子使用 Serilog输出日志到diagnostics trace (把它放在托管程序的Startup中。)
注意: Serilog 把不同的日志sink放在不同的程序包中,这个例子中,我们需要安装Serilog.Sinks.Trace 包来启用WriteTo.Trace() 方法.

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.Trace()
    .CreateLogger();

在配置文件中加入下面的配置信息,把日志输出到一个简单文件。
我们使用Baretail 来查阅日志.

<system.diagnostics>
  <trace autoflush="true"
         indentsize="4">
    <listeners>
      <add name="myListener"
           type="System.Diagnostics.TextWriterTraceListener"
           initializeData="Trace.log" />
      <remove name="Default" />
    </listeners>
  </trace>
</system.diagnostics>

注意:使用这个方法需要托管程序有对日志文件的写权限。如果没有指定目录,这个文件会生成在应用程序根目录。(生产环境不推荐这样做),在生产环境需要把日志文件放在应用程序目录之外。

例子: 输出到控制台

输出到控制台可以让我们零触感即时了解IdentityServer内部发生的事情。Serilog有一个漂亮的彩色的日志sink,叫做Serilog.Sinks.Literate. 可以如下启用:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.LiterateConsole()
    .CreateLogger();

调试自己的代码

我们也可以利用日志系统来记录我们自己的扩展代码。
在类里面增加一个ILog实例,如下面的代码:。

private readonly static ILog Logger = LogProvider.For<MyClass>();

用这个实例记录日志

Logger.Debug("Getting claims for identity token");

使用自己的日志基础设施

你也许已经有了一个日志框架,希望IdentityServer把日志输出到那里面。
推荐的方式是,选择一个日志库(NLog, Log4Net etc.),给这个日志库写一个自定义Sink。(我们喜欢Serilog).
Serilog的例子请看这里.

请看这里 了解使用Serilog处理日志和事件.

阻止所有的日志输出

(v2.5新增)
在某些场景里(比如:生产环境),我们不喜欢产生任何日志。这种情况下可以配置空(no-op)日志器 (在Startup或者托管代码里面):

LogProvider.SetCurrentLogProvider(new NoopLogProvider());

相关文章

  • Funboot开发:系统日志组件

    系统日志组件 目录 系统日志 使用MongoDb存储日志 系统日志 系统日志分为操作日志、错误日志、登录日志、数据...

  • Mysql之日志

    mysql的日志种类:通用查询日志、慢查询日志、错误日志、二进制日志、中继日志、重做日志、回滚日志。 1、通用查询...

  • 27-日志管理

    本章内容 ◆ 日志介绍◆ 日志配置◆ 日志管理◆ 远程日志◆ 基于MYSQL的日志 日志介绍 rsyslog 启用...

  • 日志基础知识

    1. 日志 系统日志 应用日志 安全日志 2. 日志框架 vs 日志门面 日志框架JULLog4jLogbackL...

  • 20171012 日志管理

    日志介绍rsyslog日志管理journalctlMySQL管理日志 一、日志介绍 (一)日志的基本概念 日志:将...

  • mysql日志系统

    mysql有如下几种不同的日志: 错误日志 二进制日志(Binlog日志) 查询日志 慢查询日志 事务日志(inn...

  • 8. 日志

    1. 日志 日志事务日志 transaction log中继日志 reley log错误日志 error ...

  • hadoop 3.x 案例7: hadoop大数据平台日志

    一. Hadoop日志 日志分类: namenode日志 datanode日志 secondarynamenode...

  • MySQL主要日志的基本操作与简单解析

    MySQL主要有以下几种日志: 错误日志 通用查询日志 慢查询日志 二进制日志 DDL日志 日志是mysql数据库...

  • httpd常用配置:日志设定

    日志设定 日志类型:访问日志和错误日志 访问日志:  LogFormat "%h %l %u %t "%r" %>...

网友评论

      本文标题:日志

      本文链接:https://www.haomeiwen.com/subject/ajbpyttx.html