Cliente Windows para monitoramento de impressões usando PaperCut Print Logger.
- Visão Geral
- Requisitos
- Instalação
- Configuração
- Uso
- Estrutura do Projeto
- Troubleshooting
- Desenvolvimento
O PrintWatch Client é um serviço Windows desenvolvido em Go que monitora automaticamente os logs do PaperCut Print Logger e envia os dados de impressão para uma API centralizada. O sistema inclui:
- Monitoramento automático dos logs do PaperCut
- Verificação de duplicatas antes do envio
- Sistema de fila para impressões pendentes
- Logs detalhados para auditoria
- Instalação simplificada via instalador
- Windows 10/11 ou Windows Server 2016+
- .NET Framework 4.5+ (para o instalador)
- PaperCut Print Logger instalado e configurado
- PaperCut Print Logger: Deve estar configurado e gerando logs CSV
- API PrintWatch: Servidor da API deve estar acessível
- Repositório: https://github.com/ronnybrendo/PrintWatch-api-nodejs
-
Instale o Inno Setup Compiler
- Download: https://jrsoftware.org/isdl.php
- Instale a versão mais recente
-
Compile o instalador
# Navegue até a pasta do projeto cd PrintWacth-client-windows # Compile usando o Inno Setup iscc installer.iss -
Arquivo gerado
- O instalador será criado:
PrintWatch_Installer_Go_Installer.exe
- O instalador será criado:
-
Execute o instalador
- Clique duas vezes no arquivo
.exegerado - Siga o assistente de instalação
- Clique duas vezes no arquivo
-
Configure durante a instalação
- Setor: Nome do setor/departamento
- ID da Empresa: Identificador numérico da empresa
- URL da API: Endereço da API (ex:
http://seu-servidor:3005)
-
Instalação automática
- O instalador copia os arquivos necessários
- Instala o serviço Windows automaticamente
- Inicia o serviço
-
Compile o projeto
go build -o PrintWatchService.exe main.go
-
Crie o arquivo de configuração
{ "setor": "CPD", "idEmpresa": 2, "apiBaseUrl": "http://seu-servidor:3005" } -
Instale o serviço
PrintWatchService.exe install PrintWatchService.exe start
O arquivo config.json deve estar no mesmo diretório do executável:
{
"setor": "CPD",
"idEmpresa": 2,
"papercutLogDir": "C:\\Program Files (x86)\\PaperCut Print Logger\\logs\\csv\\daily",
"apiBaseUrl": "http://seu-servidor:3005",
"pollingIntervalSeconds": 10
}| Campo | Descrição | Padrão |
|---|---|---|
setor |
Nome do setor/departamento | - |
idEmpresa |
ID numérico da empresa | - |
papercutLogDir |
Diretório dos logs do PaperCut | C:\Program Files (x86)\PaperCut Print Logger\logs\csv\daily |
apiBaseUrl |
URL base da API | http://seu-servidor:3005 |
pollingIntervalSeconds |
Intervalo de verificação (segundos) | 10 |
-
Verifique o diretório de logs
- Padrão:
C:\Program Files (x86)\PaperCut Print Logger\logs\csv\daily - Arquivos:
papercut-print-log-YYYY-MM-DD.csv
- Padrão:
-
Formato esperado dos logs
Time,User,Pages,Copies,Printer,Document Name,Client,Paper Size,Language,Height,Width,Duplex,Grayscale,Size
# Instalar o serviço
PrintWatchService.exe install
# Iniciar o serviço
PrintWatchService.exe start
# Parar o serviço
PrintWatchService.exe stop
# Remover o serviço
PrintWatchService.exe remove
# Modo debug (console)
PrintWatchService.exe-
Serviços Windows
- Abra "Serviços" (services.msc)
- Procure por "PrintWatch Service"
- Status deve ser "Em execução"
-
Logs do Sistema
- Localização:
C:\ProgramData\PrintWatchServiceLogs\ - Arquivo:
printwatch_service.log - Diretório de pendências:
pending\
- Localização:
O serviço executa automaticamente:
- Ao iniciar: Processa impressões pendentes
- A cada ciclo: Monitora novos logs do PaperCut
- Verificação: Confirma se a impressão já existe na API
- Envio: Transmite dados para a API
- Fila: Salva impressões falhadas para retry
PrintWacth-client-windows/
├── main.go # Código principal do serviço
├── installer.iss # Script do instalador
├── go.mod # Dependências Go
├── go.sum # Checksums das dependências
├── LICENSE # Licença MIT
├── README.md # Este arquivo
└── .gitignore # Arquivos ignorados pelo Git
main.go: Lógica principal do serviço Windowsinstaller.iss: Script do instalador Inno Setup- Configuração: Leitura do
config.json - Logs: Sistema de logging em arquivo
- API: Comunicação HTTP com o servidor
- Fila: Sistema de impressões pendentes
Erro: "Failed to read config.json"
Solução: Verifique se o arquivo config.json existe e está válido na pasta de instalação
Erro: "API_COMM_FAIL"
Solução:
- Verifique a conectividade de rede
- Confirme a URL da API no
config.json - Teste a API manualmente
Erro: "PaperCut log file does not exist"
Solução:
- Verifique o caminho em
papercutLogDir - Confirme se o PaperCut está gerando logs
- Aguarde a criação do arquivo do dia
Log: "No pending impressions to process"
Solução:
- Verifique se há novos logs do PaperCut
- Confirme a conectividade com a API
- Verifique os logs de erro
Para ativar logs detalhados:
-
Modo debug
PrintWatchService.exe
-
Logs do sistema
- Event Viewer → Windows Logs → Application
- Procure por eventos do "PrintWatch"
-
Logs do arquivo
- Localização:
C:\ProgramData\PrintWatchServiceLogs\printwatch_service.log
- Localização:
-
Instale o Go
# Versão mínima: 1.24.5 go version -
Clone o repositório
git clone <repository-url> cd PrintWacth-client-windows
API Node.js: https://github.com/ronnybrendo/PrintWatch-api-nodejs
-
Instale dependências
go mod tidy
-
Compile
go build -o PrintWatchService.exe main.go
main(): Ponto de entrada e controle de comandosmyservice.Execute(): Lógica principal do serviçoreadConfig(): Leitura da configuraçãoprocessPapercutLogs(): Processamento dos logstryProcessImpression(): Envio para APIprocessPendingImpressions(): Fila de pendências
# Teste de compilação
go build
# Teste de execução (modo debug)
./PrintWatchService.exe
# Teste de instalação
./PrintWatchService.exe install
./PrintWatchService.exe start-
Instale o Inno Setup
- Download: https://jrsoftware.org/isdl.php
-
Compile o instalador
iscc installer.iss
-
Arquivo gerado
PrintWatch_Installer_Go_Installer.exe
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Para suporte técnico ou dúvidas:
- Issues: Abra uma issue no GitHub
- Documentação: Consulte este README
- Logs: Verifique os logs em
C:\ProgramData\PrintWatchServiceLogs\
Desenvolvido por Ronnybrendo
Versão: 1.0.0
Última atualização: 2025