Hi, All, 

I have some piece of code with very high cpu usage, logging is actually 
pretty cpu intensive, so I tried to turn it off as follows, 

type myLog struct {
       *log.Logger
       enable bool
}

func (l *myLog) Println(v ...interface{}) {
       if l.enable == true {
              l.Output(2, fmt.Sprintln(v...))
       }
}


Debug = myLog{log.New(debugHandle,
       "DEBUG: ",
       log.Ldate|log.Ltime|log.Lshortfile), false}
if debugOn == true {
       Debug.enable = true
       Debug.SetOutput(&lumberjack.Logger{
              Filename:   "/var/log/sflow/sFlowDecoder.debug",
              MaxSize:    MAX_LOG_SIZE,      // megabytes after which new file 
is created
              MaxBackups: MAX_LOG_BACKUP,    // number of backups
              MaxAge:     MAX_LOG_KEEP_TIME, //days
       })
} else {
       Debug.enable = false
}



I was expecting Debug.Println will be compiled with zero footprint in the 
code, or at least a NOP. As far as I can see, the debugs are not logged 
into the file. However, when I did profiling, it still takes significant 
cpu resource. 
by doing 
(pprof) list main.pktDistribute
<snip> 

     10ms      1.59s    547: Debug.Println("put packet on the queue", 
tmpData)

<snip>

I am wondering what I did wrong? What would be a proper solution to 
completely turn this off?

Thanks,
Chun

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to