-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Log del uso de la herramienta #120
Comments
A mí pedagógicamente me interesa saber cuántas veces corrieron los tests y sus resultados. Y si lo hicieron con algún Warning / Error en el código también me interesa saber cuáles. |
Bueno, @PalumboN , hoy retomé un poquito (todavía estoy en Mar Azul, el domingo vuelvo y el miércoles me vuelvo a ir a Mendoza una semanita), pero ya curioseé y
|
Hoy probé configurar un logger para el cliente y el server, los puse en un directorio "rootDirs": [
"src",
"../utils",
], El import se hace import { logger } from './logger' Pero ahora que lo pensé un toque más la implementación del logger no deja de ser un pasamanos y no le veo mucha utilidad (más allá de wrappear el framework que se use por atrás). Por ahora lo voy a volver para atrás y pienso usar directamente winston, veremos si después se justifica la necesidad. |
Update: ya configuré en LSP el server para que empiece a generar logs tanto en consola como en un file, que va a tener el nombre https://marketplace.visualstudio.com/items?itemName=dmytro-pustovit.json-logs Ahora estoy puliendo un poco los logs (ahí se ve que estoy tratando de decir qué file está buildeando y validando, ya capturo los errores de validación para que los muestre también en la consola y tengo dos formatters diferentes para la consola y para el file). |
A modo de recordatorio para cuando retome dejo acá qué hice hasta ahora: Wollok LSP IDEQué hay
Qué falta
Wollok TS CLI
Otros tickets a crear
Cómo se veConsola OutputFile{"level":"info","message":"⌛ Building environment for main.wpgm | 109 ms","timestamp":"2024-01-16T03:49:58.704Z"}
{"level":"info","message":"⌛ Building environment for utils/object.wlk | 122 ms","timestamp":"2024-01-16T22:20:18.780Z"}
{"file":"file:///home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm","level":"error","message":"✘ Failed to rebuild document: Error: Failed to parse home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm: \n-- PARSING FAILED --------------------------------------------------\n\n 1 | import example.*\n 2 | \n> 3 | program {\n | ^\n 4 | const pepita = new Bird()\n 5 | const semilla = new Seed()\n\nExpected one of the following: \n\nidentifier, whitespace\n","timestamp":"2024-01-16T22:23:20.053Z"}
{"file":"file:///home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm","level":"error","message":"✘ Failed to rebuild document: Error: Failed to parse home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm: \n-- PARSING FAILED --------------------------------------------------\n\n 1 | import example.*\n 2 | \n> 3 | program {\n | ^\n 4 | const pepita = new Bird()\n 5 | const semilla = new Seed()\n\nExpected one of the following: \n\nidentifier, whitespace\n","timestamp":"2024-01-16T22:23:20.748Z"}
{"file":"file:///home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm","level":"error","message":"✘ Failed to rebuild document: Error: Failed to parse home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm: \n-- PARSING FAILED --------------------------------------------------\n\n 1 | import example.*\n 2 | \n> 3 | program {\n | ^\n 4 | const pepita = new Bird()\n 5 | const semilla = new Seed()\n\nExpected one of the following: \n\nidentifier, whitespace\n","timestamp":"2024-01-16T22:36:30.759Z"}
{"file":"file:///home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm","level":"error","message":"✘ Failed to rebuild document: Error: Failed to parse home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm: \n-- PARSING FAILED --------------------------------------------------\n\n 1 | import example.*\n 2 | \n> 3 | program {\n | ^\n 4 | const pepita = new Bird()\n 5 | const semilla = new Seed()\n\nExpected one of the following: \n\nidentifier, whitespace\n","timestamp":"2024-01-16T22:36:30.760Z"}
{"level":"info","message":"⌛ Building environment for utils/object.wlk | 106 ms","timestamp":"2024-01-16T22:36:31.106Z"}
{"level":"info","message":"⌛ Building environment for example.wlk | 104 ms","timestamp":"2024-01-16T22:36:31.385Z"}
{"file":"file:///home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm","level":"error","message":"✘ Failed to rebuild document: Error: Failed to parse home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita/main.wpgm: \n-- PARSING FAILED --------------------------------------------------\n\n 1 | import example.*\n 2 | \n> 3 | program {\n | ^\n 4 | const pepita = new Bird()\n 5 | const semilla = new Seed()\n\nExpected one of the following: \n\nidentifier, whitespace\n","timestamp":"2024-01-16T22:37:48.563Z"}
{"level":"info","message":"⌛ Building environment for main.wpgm | 131 ms","timestamp":"2024-01-16T22:37:49.136Z"}
{"level":"info","message":"⌛ Building environment for main.wpgm | 103 ms","timestamp":"2024-01-16T22:37:49.368Z"}
{"level":"info","message":"⌛ Building environment for testExample.wtest | 135 ms","timestamp":"2024-01-16T23:55:51.811Z"}
{"level":"info","message":"⌛ Building environment for example.wlk | 105 ms","timestamp":"2024-01-16T23:55:52.116Z"}
{"level":"info","message":"⌛ Building environment for testExample.wtest | 117 ms","timestamp":"2024-01-16T23:56:58.720Z"}
{"level":"info","message":"⌛ Building environment for testExample.wtest | 106 ms","timestamp":"2024-01-16T23:56:58.828Z"}
{"level":"info","message":"⌛ Building environment for example.wlk | 105 ms","timestamp":"2024-01-16T23:56:58.939Z"}
{"level":"info","message":"⌛ Building environment for example.wlk | 123 ms","timestamp":"2024-01-16T23:56:59.063Z"}
{"level":"info","message":"⌛ Building environment for main.wpgm | 104 ms","timestamp":"2024-01-17T00:01:10.342Z"}
{"level":"info","message":"⌛ Building environment for testExample.wtest | 104 ms","timestamp":"2024-01-17T00:02:55.147Z"}
{"level":"info","message":"Puede ser puede ser","timestamp":"2024-01-17T00:02:55.243Z"}
{"level":"info","message":"⌛ Building environment for example.wlk | 110 ms","timestamp":"2024-01-17T00:02:55.360Z"}
{"level":"info","message":"⌛ Building environment for example.wlk | 126 ms","timestamp":"2024-01-17T00:02:55.488Z"}
{"level":"info","message":"⌛ Building environment for main.wpgm | 105 ms","timestamp":"2024-01-17T00:02:55.594Z"}
{"level":"info","message":"⌛ Building environment for testExample.wtest | 101 ms","timestamp":"2024-01-17T02:41:14.934Z"}
{"level":"info","message":"Running all tests matching \u001b[3m\u001b[34mtestExample.\"test para pepita\".\"energia inicial de pepita\"\u001b[39m\u001b[23m on \u001b[3m\u001b[34m/home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita\u001b[39m\u001b[23m","timestamp":"2024-01-17T02:41:20.643Z"}
{"level":"info","message":"Running 1 tests...","timestamp":"2024-01-17T02:41:20.825Z"}
{"level":"info","message":"","timestamp":"2024-01-17T02:41:20.856Z"}
{"level":"info","message":" ","timestamp":"2024-01-17T02:41:20.856Z"}
{"level":"info","message":" ","timestamp":"2024-01-17T02:41:20.857Z"}
{"level":"info","message":"\n","timestamp":"2024-01-17T02:41:20.858Z"}
{"level":"info","message":"⌛ Building environment for example.wlk | 124 ms","timestamp":"2024-01-17T10:40:35.750Z"} |
El viernes 27/01 retomo ésto. |
#134 ;) |
@PalumboN , el log que te genera cada vez que corrés los tests (le puse que emita la performance, que loguee el stack trace de las fallas): {
"failures": [],
"level": "info",
"message": "🧪 Test runner executed matching testExample.\"test para pepita\" on /home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita",
"result": {
"failed": 0,
"ok": 2
},
"timeElapsed": 186,
"timestamp": "2024-01-26T23:02:54.681Z"
}
{
"failures": [
{
"error": [
"wollok.lib.AssertionException: Expected <101> but found <100>",
" at testExample.\"test para pepita\".\"energia inicial de pepita\" [testExample.wtest:5]"
],
"test": "testExample.\"test para pepita\".\"energia inicial de pepita\""
}
],
"level": "info",
"message": "🧪 Test runner executed matching testExample.\"test para pepita\" on /home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita",
"result": {
"failed": 1,
"ok": 1
},
"timeElapsed": 221,
"timestamp": "2024-01-26T23:03:09.295Z"
} |
@PalumboN @ivojawer Y ésto es lo que loguearíamos con un programa, los games no los incluiría porque eso entra en loop y es más heavy loguear algo que tenga sentido: {
"error": [
"wollok.lang.MessageNotUnderstoodException: a Seed does not understand chachini()",
" at example.Bird.eat(food) [example.wlk:6]",
" at main.pepe [main.wpgm:3]"
],
"level": "info",
"message": "🚀 Program executed main.pepe on /home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita",
"ok": false,
"timeElapsed": 184,
"timestamp": "2024-01-26T23:04:30.885Z"
}
{
"level": "info",
"message": "🚀 Program executed main.pepe on /home/dodain/workspace/wollok-dev/wollok-workspace/demo/pruebita",
"ok": true,
"timeElapsed": 171,
"timestamp": "2024-01-26T23:05:07.013Z"
} |
No estoy logueando en el programa tampoco lo que se emita por consola, para tratar de no ser muy verboso (tampoco estoy muy seguro si tiene sentido, tenemos github para ver en qué estado estaba la cosa en un momento determinado) |
Buenísimo Fer, muy groso!! :D Yo de los juegos loggearia al menos que se ejecutó un game (sin info de lo que pasa dentro). Pero eso al menos me deja ver cuántas veces se probó el juego durante el desarrollo (y si se puede tener el tiempo que estuvo corriendo el juego mejor). Por otro lado, me parece bien que estés yendo a por todo con la info de logging. Abrazo grande! |
@fdodino este issue ya está? Si quedaron cosas podemos moverlas a otro issue y cerrar este. |
@PalumboN , sí, no se por qué no lo cerré cuando lo implementamos. Bien revisando issues! |
Como parte de mejorar la experiencia de usuario queremos registrar un log de la actividad de las personas que trabajan en Wollok. Dentro del mismo proyecto, queremos grabar un registro de
package.json
): build, validación, ejecución de tests, ejecución de un comando del REPL, etc.Como herramienta de logging existe Pino y Winston (ambos desconocidos por mí) según este artículo. Idealmente deberíamos buscar que sea estructurado el logging, quizás que se acote el tamaño y hay que agregarlo al gitignore (abrir un issue en wollok-ts-cli). Me encantaría agregar un comando en wollok-lsp-ide que mande el log a una casilla de correo nuestra, creo que hay que ser claros respecto a que no se envía ninguna info sensible.
Tareas derivadas
The text was updated successfully, but these errors were encountered: