有意思的代码--利用系统信号切换日志模式
2015-07-30 17:47
316 查看
看到Kite里面的源码,有段代码挺有意思。
上代码先:
可以通过给正在运行的程序,切换日志模式。
举一反三,可以利用这个方式,来做很多开关切换。
上代码先:
// SetupSignalHandler listens to signals and toggles the log level to DEBUG // mode when it received a SIGUSR2 signal. Another SIGUSR2 toggles the log // level back to the old level. func (k *Kite) SetupSignalHandler() { c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGUSR2) go func() { for s := range c { k.Log.Info("Got signal: %s", s) if debugMode { // toogle back to old settings. k.Log.Info("Disabling debug mode") if k.SetLogLevel == nil { k.Log.Error("SetLogLevel is not defined") continue } k.SetLogLevel(getLogLevel()) debugMode = false } else { k.Log.Info("Enabling debug mode") if k.SetLogLevel == nil { k.Log.Error("SetLogLevel is not defined") continue } k.SetLogLevel(DEBUG) debugMode = true } } }() }
可以通过给正在运行的程序,切换日志模式。
举一反三,可以利用这个方式,来做很多开关切换。
相关文章推荐
- java 读取配置文件
- Python进阶之返回函数
- 利用栈实现精制转换c++
- php设计模式之适配器模式
- Java链表形式实现多项式相加
- QT中PRO文件写法的详细介绍,很有用,很重要!
- c#实现KTV点歌系统
- log4php安装
- PHP的元语言编程
- Java byte数据类型详解
- ThinkPHP I方法
- 抽取Zabbix的图形整合到自己后台 推荐
- C#---截取字符串
- Spring整合hibernate
- java concurrent 包中并发类的Demo
- JavaWeb学习总结——文件上传和下载
- java并发编程之volatile详解
- 象棋比赛问题(排序/C++)
- PHP: chr和pack、unpack那些事
- java里split(" {1,}")什么意思啊?