2017-05-09 6 views
-1

Ich habe den Syslog-Daemon-Dienst in meiner Golang-App implementiert. Ich habe syslog.New im Hauptpaket verwendet und es funktioniert, aber jetzt möchte ich es in ein anderes Paket exportieren.Implementieren Sie eine Funktion, die einen Zeiger zurückgibt

package config 

import (
    "log/syslog" 
) 

func LogBook() ? { 
    sysLog, _ := syslog.New(syslog.LOG_LOCAL0|syslog.LOG_ERROR, "myapp") // syslog.New returns (*Writer, error) 
    return ? 
} 

Wie kann ich diese Funktion implementieren? Nach, wie kann ich diese Variable 'sysLog' in anderen Paketen verwenden?

Vielen Dank!

+0

Wie wäre es mit einem * syslog.Writer? Was ist die eigentliche Frage, denn diese Antwort ist einfach zu offensichtlich. – Volker

+0

Wenn ich diese Frage mache, dann bin ich Rookie in Golang und die Antwort ist nicht offensichtlich für mich ... Ich weiß nicht, wie ich die Funktion schreiben kann. – icarbajo

+0

Wenn neu zu Go ist die beste Empfehlung, die Tour of Go zweimal zu nehmen und danach Effective Go zu lesen. – Volker

Antwort

2

Die Antwort ist ziemlich einfach, wie @Volker sagte

func LogBook() *syslog.Writer { 
    sysLog, _ := syslog.New(syslog.LOG_LOCAL0|syslog.LOG_ERROR, "myapp") 
    return sysLog 
} 

Verwendungsbeispiel:

func main(){ 
    w := LogBook() 
    w.Info("message") 
} 

Bitte beachten Sie:

  • Dieses Paket wird auf Windows nicht implementiert. Da das Syslog-Paket eingefroren ist, sollten Windows-Benutzer ein Paket außerhalb der Standardbibliothek verwenden. Zum Hintergrund siehe https://golang.org/issue/1108.
  • Dieses Paket ist nicht in Plan 9 implementiert.
  • Dieses Paket ist nicht auf NaCl (Native Client) implementiert.
+0

Danke @Elad. Genau das habe ich beim ersten Mal gemacht, aber nachher bekomme ich die Variable, zB sysLog.Info ("message"), nicht mehr in meiner Hauptfunktion: S – icarbajo

+0

habe ich bearbeitet. In jedem Fall solltest du den @Volker-Rat hören und die GO-Tour machen. – Elad

+0

Ja, er hat Grund. – icarbajo

Verwandte Themen