Tenho uma situação em que quero gravar todos os logs criados por mim em um arquivo de texto.
Estamos usando a API java.util.logging.Logger para gerar os logs.
Eu tentei:
private static Logger logger = Logger.getLogger(className.class.getName());
FileHandler fh;
fh = new FileHandler("C:/className.log");
logger.addHandler(fh);
Mas ainda estou conseguindo meus logs somente no console ....
Respostas:
Experimente esta amostra. Funciona para mim.
Produz a saída em MyLogFile.log
Editar:
Para remover o manipulador de console, use
desde que o ConsoleHandler esteja registrado com o criador de logs pai do qual todos os criadores de log derivam.
fonte
FileHandler(path, true)
para anexar o log ao arquivo de log existente.Em primeiro lugar, onde você definiu seu criador de logs e de qual classe \ método tentando chamá-lo? Há um exemplo de trabalho, recém-assado:
No seu código, você esqueceu de definir o formatador; se você precisar de um simples, pode fazê-lo como mencionei acima, mas há outra opção, você pode formatá-lo sozinho, há um exemplo (basta inseri-lo em vez desta linha fh .setFormatter (novo SimpleFormatter ()) a seguir):
Ou qualquer outra modificação, como quiser. Espero que ajude.
fonte
O local do arquivo de log pode ser controlado através do arquivo logging.properties. E isso pode ser passado como parâmetro da JVM ex:
java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
Detalhes: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm
Configurando o Manipulador de Arquivos
Para enviar logs para um arquivo, adicione FileHandler à propriedade handlers no arquivo logging.properties. Isso permitirá o registro de arquivos globalmente.
handlers= java.util.logging.FileHandler
Configure o manipulador definindo as seguintes propriedades:java.util.logging.FileHandler.pattern especifica o local e o padrão do arquivo de saída. A configuração padrão é o seu diretório inicial.
java.util.logging.FileHandler.limit especifica, em bytes, a quantidade máxima que o criador de logs grava em qualquer arquivo.
java.util.logging.FileHandler.count especifica quantos arquivos de saída percorrer.
java.util.logging.FileHandler.formatter especifica a classe formatador java.util.logging que a classe manipuladora de arquivos usa para formatar as mensagens de log. O SimpleFormatter grava breves resumos "legíveis por humanos" dos registros de log.
Para instruir o java a usar esse arquivo de configuração em vez de $ JDK_HOME / jre / lib / logging.properties:
fonte
Uma boa biblioteca disponível chamada log4j para Java .
Isso fornecerá vários recursos. Acesse o link e você encontrará sua solução.
fonte
Talvez seja isso que você precisa ...
fonte
fonte
fonte
Espero que as pessoas achem isso útil
fonte
Aqui está minha classe de log com base na resposta aceita :
fonte
Aqui está um exemplo de como substituir a configuração do Logger a partir do código. Não requer arquivo de configuração externo.
FileLoggerTest.java:
MyLogHandler.java
fonte