recover,seelog-recoverseelog

Go语言宕机恢复(recover)原链接

Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来,recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果,如果当前的 goroutine 陷入恐慌,调用 recover 可以捕获到 panic 的输入值,并且恢复正常的执行
Go语言没有异常系统,其使用 panic 触发宕机类似于其他语言的抛出异常,recover 的宕机恢复机制就对应其他语言中的 try/catch 机制

panic 和 recover 的关系

panic 和 recover 的组合有如下特性:

  • 有 panic 没 recover,程序宕机。
  • 有 panic 也有 recover,程序不会宕机,执行完对应的 defer 后,从宕机点退出当前函数后继续执行。

虽然 panic/recover 能模拟其他语言的异常机制,但并不建议在编写普通函数时也经常性使用这种特性。

seelog日志文件

<seelog minlevel="debug" maxlevel="critical">
    <exceptions>
        <exception filepattern="*main.go" minlevel="error"/>
    </exceptions>
    <outputs formatid="monitor">
    <!-- outputs里面是日志的配置 -->
        <console/>

        <buffered formatid="rolling" size="1000" flushperiod="1000">
        <!-- buffered缓冲设置 刷新间隔 -->
         <rollingfile type="date" filename="./log/monitor/web.log" datepattern="2006.01.02"  maxrolls="30" />
         <!-- rollingfile里面是日志的设置 -->
         <!-- type回滚方式 日志保存最久时间 -->
        </buffered>

        <filter levels="error">
            <file path="./log/monitor/error.log"/>
           <!-- <smtp senderaddress="noreply-notification-service@none.org" 
                  sendername="Automatic notification service" 
                  hostname="mail.none.org" 
                  hostport="587" 
                  username="nns" 
                  password="123">
                <recipient address="john-smith@none.com"/>
                <recipient address="hans-meier@none.com"/>
            </smtp>-->
           <!-- <conn net="tcp4" addr="server.address:5514" tls="true" insecureskipverify="true" />-->
        </filter>

    </outputs>
    <formats>
    <!-- formats里面是日志输出格式配置 -->
        <format id="monitor" format="%Date/%Time [%LEV] &lt;%File %Line&gt; %Msg%n"/>
        <format id="rolling" format="%Date/%Time [%LEV] &lt;%File %Line&gt; %Msg%n"/>
    </formats>
</seelog>

seelog配置文件

func LogConfig() {
	logger, err := logs.LoggerFromConfigAsFile("seelog.xml")
	if err != nil {
		fmt.Println(err)
		return
	}
	logs.ReplaceLogger(logger)
}

flag 命令行参数 原链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值