Por seu significado literal do Oxford Dictionary, a palavra “log” pode ser definida como “um registro oficial de eventos durante um determinado período de tempo, especialmente uma viagem em um navio ou avião”. No domínio da programação, os programadores utilizam este termo também para manter um registo de eventos e actividades importantes que são importantes para que um programa funcione correctamente. A atividade ou criação de um registro é chamada de log e as ferramentas para fazer tal tarefa são chamadas de logger.
O registro é documentado em um arquivo chamado Log File. No termo programador de computador, Um arquivo de log pode ser descrito como
um arquivo que mantém um registro de eventos, processos, mensagens e comunicação entre vários aplicativos de software de comunicação e o sistema operacional. Os arquivos de log estão presentes em softwares executáveis, sistemas operacionais e programas onde todas as mensagens e detalhes de processos são registrados. Cada arquivo executável produz um arquivo de log onde todas as atividades são anotadas.
– Technopedia
Um arquivo de log é importante para nós programadores para mantermos um registro de eventos importantes para certos casos como depuração, avaliação e monitoramento. Neste artigo, eu gostaria de compartilhar uma maneira de criar um pacote logger simples para ser implementado no lado do servidor com Golang.
Logger Package in Golang
Nosso código começa com a declaração de uma cláusula de pacote chamada “logger” e a importação de pacotes necessários: “fmt”, “log”, “os” e “path/filepath”. Vamos usar dois tipos de logger: Log comum e Log de erros. O primeiro é usado para logar eventos comuns como login, logout, fetched data, post data, etc. Por outro lado, o último é usado para logar especificamente para eventos de erro. Em seu núcleo, nosso logger é construído sobre um objeto de log. Assim, vamos criar duas variáveis “CommonLog” e “ErrorLog” (note que a primeira letra está em maiúsculas para indicar que a variável é exportada) com um ponteiro para logger struct.
package loggerimport (
"fmt"
"log"
"os"
"path/filepath"
)var CommonLog *log.Loggervar ErrorLog *log.Logger
Next, vamos iniciar o nosso logger. Vamos começar por declarar o caminho do ficheiro. Fazemos isso apontando a localização do nosso arquivo de log usando o comando Abs do pacote file path (neste caso estamos usando a localização absoluta do arquivo de log). Depois mantemos a referência dentro da variável filePath.
Inside the init function, continuamos configurando o comando que será executado quando o arquivo de log for aberto pelo programa (esta configuração é referenciada dentro da variável openLogfile). Fazemos isso com o comando “OpenFile” do pacote “os” especificando o caminho do arquivo (usando nossa variável “filePath” com adição ao nome do arquivo), flags e fileMode. Nesta parte também precisamos decidir o nome do arquivo de log; neste artigo, nomeamos o arquivo de log como log.log (note a extensão log). Atenção particular em relação às flags e ao fileMode utilizado na função. Neste caso, as flags podem ser descritas como indicadores que dizem ao programa o que fazer com o arquivo aberto. Para isso, usamos a constante predefinida do pacote “os”:
- os.0_RDWR = abrir o ficheiro read-write
- os.0_CREATE = criar um novo ficheiro se nenhum existir
- os.0_APPEND = anexar dados ao ficheiro ao escrever
Meanwhile the fileMode “0666” is the code to set Default file permission to modify the file (further reading about user permission can be seen here).
Outras vezes, vamos reescrever a nossa variável CommonLog e ErrorLog para conter um novo log. Fazemos isso com o comando “New” do pacote “log” especificando 1) o canal para o arquivo de log, 2) um prefixo e requerido 3) flags.
- Channel for the log file: usamos nossa variável openLogfile aqui
- Prefix: Este é o identificador ou o nosso log. Podemos usar a palavra string personalizada para definir o tipo de lof (isto é, “CommonLogger” ou “ErrorLogger”)
- Flags: As bandeiras para esta função denotam a informação que queremos ter no nosso log. Para este propósito, usamos a função embutida do pacote de log em Go (detalhes podem ser vistos aqui).
Injeção do Logger em nosso código
Finalmente, poderíamos injetar nosso logger para registrar eventos importantes que estão acontecendo em nosso programa. Isto pode ser feito usando o comando “Prinln” como o que usamos com o pacote “fmt”.
Aqui no arquivo de log, o resultado do logger tomará forma assim:
É Feito!
Então, é isso pessoal! criamos um pacote de logger que pode ser facilmente injetado como uma dependência em nosso programa Go. Esperamos que possa ser útil para vocês, colegas programadores.