-// Call either syslog-related logger.Printf if SyslogEnabled,
-// default log.Printf otherwise.
-func Printf(f string, v ...interface{}) {
- if sysloger == nil {
- log.Printf(f, v...)
+// NewLogger return a logger for specified level. Syslog or Windows Events can be turned on.
+func NewLogger(level string, syslog bool) (*logrus.Logger, error) {
+ var logger *logrus.Logger
+ logLevel, err := logrus.ParseLevel(level)
+ if err != nil {
+ return nil, errors.Wrap(err, "logrus.ParseLevel")
+ }
+
+ if syslog {
+ syslogHook, err := logrus_syslog.NewSyslogHook("", "", logsyslog.LOG_INFO, "GoVPN")
+ if err != nil {
+ return nil, errors.Wrap(err, "logrus_syslog.NewSyslogHook")
+ }
+ logger = &logrus.Logger{
+ Formatter: &syslogFormatter{},
+ Hooks: make(logrus.LevelHooks),
+ }
+ logger.Hooks.Add(syslogHook)