zoukankan      html  css  js  c++  java
  • 有意思的代码--利用系统信号切换日志模式

    看到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 } } }() }

    可以通过给正在运行的程序,切换日志模式。

    举一反三,可以利用这个方式,来做很多开关切换。

     --------------------补充--------------

    SIGUSR的code的查看和发送方式//Ubuntu

    cat /usr/include/asm-generic/signal.h | grep SIGUS
    #define SIGUSR1 10
    #define SIGUSR2 12


      //Mac

      grep -r "SIGUS" /usr/include/
      /usr/include//apache2/ap_mpm.h: signals for its use (i.e. SIGUSR1), but guarantees that these signals
      /usr/include//apache2/mpm_common.h:#define AP_SIG_GRACEFUL SIGUSR1
      /usr/include//apache2/mpm_common.h:#define AP_SIG_GRACEFUL_STRING "SIGUSR1"
      /usr/include//sys/signal.h:#define SIGUSR1 30 /* user defined signal 1 */
      /usr/include//sys/signal.h:#define SIGUSR2 31 /* user defined signal 2 */



    kill -12 [PID]
  • 相关阅读:
    个体户、独资公司、有限公司、股份公司、控股公司、集团公司
    个人所得税
    移动端下拉滚动刷新
    web页面引入字体
    Flex布局
    NodeJS包管理器之Yarn
    域名、顶级域名、一级域名、二级域名、子域名
    JVM线程状态Running、Sleeping、Wait、Park、Monitor
    Java虚拟机解释器与JIT编译器
    ASP.NET之Cookie(坑爹的Response.Cookies.Remove)
  • 原文地址:https://www.cnblogs.com/zhangqingping/p/4690073.html
Copyright © 2011-2022 走看看