2012-01-31 10 views
20

¿Dónde se puede leer los registros creados por la función que llama:GAE Golang - log.Print()?

log.Print("Message") 

la ficha "Registros" en virtud principal parece sólo para mostrar información acerca de lo que se denominan direcciones URL, pero sin ninguna información de depuración que se muestra por la aplicación.

Respuesta

30

Como se describe en documentation, debe usar la interfaz Context para iniciar sesión en lugar de log, si desea que los registros se muestren en la consola.

c := appengine.NewContext(r) 
c.Infof("Requested URL: %v", r.URL) 
+3

¿se debe pasar el Contexto, o se debe crear uno nuevo según sea necesario? –

+2

@NickSiderakis Actualmente, no importa ya que el SDK almacena en caché ambos en [desarrollo] (https://code.google.com/p/appengine-go/source/browse/appengine_internal/api_dev.go#197) y producción. – proppy

+2

¿Qué sucede si está depurando una función sin una URL de solicitud? – hendry

0

El mismo objeto de contexto se debe pasar en otras llamadas a métodos. Aquí se muestra un ejemplo:

func handleSign(w http.ResponseWriter, r *http.Request) { 
    c := appengine.NewContext(r) 
    if err := r.ParseForm(); err != nil { 
     writeError(c, err) 
     return 
    } 
} 

func writeError(c appengine.Context, err os.Error) { 
    c.Errorf("%v", err) 
} 
+0

¿Por qué necesita escribir una función separada y no simplemente usar c.Errorf ("% v", err)? – themihai

+0

Además, os.Error es antiguo (pre-Go 1). – dsymonds

+0

@mihai Creo que es solo un ejemplo que ilustra que si tuviera que llamar a otro método, pasaría el contexto. Independientemente de que sea una respuesta al comentario de Nick Siderakis, no estoy seguro de por qué se publica como respuesta. –

7

Si está utilizando el nuevo paquete de App Engine google.golang.org/appengine, en el README:

  • métodos de registro que estaban en appengine.Context son ahora funciona en google.golang.org/appengine/log

Debes usar

c := appengine.NewContext(r) 
log.Infof(c, "Requested URL: %v", r.URL)