Mantis - 新的文件日志驱动程序

Mantis 是一个用 V 编写的类型安全的 Web 框架,强调明确的、无魔法的代码。

在这篇文章中,我们将探索新的基于文件的日志系统,并了解它如何与其他 Mantis 功能无缝集成。

文件记录

要记录文件,您只需通过指定可用的“文件”日志通道来配置您的 http 应用程序。

module main

import khalyomede.mantis.http { create_app, App, Response }
import khalyomede.mantis.http.route
import khalyomede.mantis.http.response
import khalyomede.mantis.logging { Log }
import khalyomede.mantis.logging.channel { File }

fn main() {
  app := create_app(
    log: {
      channel: File{
        path: "logs/mantis.log"
      }
    }
    routes: [
      route.get(path: "/", callback: fn (app App) !Response {
        app.log.debug("new user on the home page")!

        return response.html(content: "hello world")
      })
    ]
  )

  app.serve() or { panic(err) }
}

结合错误处理

错误处理和日志记录协同工作,帮助您跟踪和调试生产中的问题。以下是配置两者的方法:

module main

import khalyomede.mantis.http { create_app, App, Response, ErrorHandler } 
import khalyomede.mantis.html { h1, div, p }
import khalyomede.mantis.http.response
import khalyomede.mantis.http.route
import khalyomede.mantis.logging { Log }
import khalyomede.mantis.logging.channel { File }

fn main() {
  app := create_app(
    log: {
      channel: File{
        path: "logs/mantis.log"
      }
    }
    error_handler: ErrorHandler{ 
      report: fn (app App, err IError) {
        app.log.log(.error, err.msg()) or {} // <-----
      }
      render: fn (app App, err IError) Response {
        return response.html(
          content: h1({}, ['Oops! Something went wrong'])
          status: .server_error
        )
      }
    }
    routes: [
      route.get(name: "index", path: "/", callback: fn (app App) Response {
        return response.html(content: div({}, ["Home page"]))
      })
    ]
  )

  app.serve() or { panic(err) }
}

独立日志记录

日志记录可以在 HTTP 应用之外使用。阅读文档以了解更多信息。

更进一步

通过阅读文档了解有关日志记录的更多信息,包括动态严重性。

如果您发现任何问题或者想要贡献任何想法,请通过 Github 问题或 Twitter 告诉我。

祝您记录愉快!