No artigo anterior, apresentei o tutorial detalhado sobre o Java Log4J. Para detalhes, veja abaixo.
Primeiro, fornecemos a você log4j.jar Download: http://logging.apache.org/log4j/1.2/download.html
1. Use Log4J para Java Web Project
1. Adicione o arquivo web.xml
<!-Configure log4j-> <Context-param> <amam-name> webApprootKey </amam-name> <amam-value> com.hsinghsu.testssh.webapp.root </amam-value> </contex t -param> <contexto-param> <amam-name> log4jconfigLocation </param-name> <amam-value> /web-inf/classes/log4j.properties </amam-value> </context-par am> <Contexto -Param> <amam-name> log4jrefreshinterval </param-name> <amam-value> 600000 </param-value> </context-param>
2. Adicione o arquivo log4j.properties
log4j.rootcategory = info, stdout, r log4j.appender.stdout = org.apache.log4j.consoleAppender log4j.appender.stdout.layout = org.apache.log4j.p AtternLayout Log4j [Apnder.stdout.Layout.Log4J.Ponversion ]%p [%t]%C.%m (%l) |%m%n log4j.append.r = org.apache.log4j.dailyrollingFileAppender #log4j.appender.r.file = e: // test // Avatar .Log ## Linux Logs File Path #log4j.appender.r.file = $ {com.hsinghsu.testssh.webapp.root} /log/testlog.log ## Windows Logs File Path Log4j.ApPender .R.File = D: //eclipsespace//testssh//webcontent//web-inf//testlog.log Log4j.appender.r.layout = org.apache.log4j.patternlayout #log4j.appender.r.lay - [ts] %p %t %c - %m %n #log4j.logger.com.neUSOFT = Debug #log4j.logger.com.opensymphony.oscache = erro log4j.logger.net.sf.navigator = info #log4 j.Logger .org.apache.commons = erro #log4j.logger.org.apache.struts = warn #log4j.logger.org.displaytag = erro #log4j.logger.org.springframework = inf o # #log4j.logger. com.ibatis. org.hibernate = debug log4j.logger.org.hibernate = info #log4j.logger.org.logicalcobwebs = warn
3. Use Log4J
Por exemplo, use log4j no userServiceImpl.java.
pacote com.hsinghsu.testssh.service.impl; DAO .USERDAO; Final Static Logger = Logger.getLogger (UserServiceImpl.class); - UserServiceImpl Login Método Nome: "+Nome+" Senha: "+senha); usuário do usuário = userdao.getUserByName (nome); if (user! = Null) {if (passwor d.equals (user.getpwd ())) {return true;
2. Explicação detalhada dos parâmetros de log4j.properties
Os níveis de log são divididos em depuração (informações de depuração), informações (informações gerais), aviso (informação de aviso), erro (informação de erro) e fatal (informações fatais de erro).
O Log4J suporta dois formatos de arquivo de configuração, um é um arquivo de formato XML e o outro é um arquivo de propriedade Java Log4j.properties.
1. Configure o logger da raiz
O Logger é responsável por lidar com a maioria das operações da exploração de log, e sua sintaxe é:
log4j.rootlogger = [nível], ApênderName1, ApênderName2,……
Nível: é a prioridade do registro, dividida em desativação, fatal, erro, aviso, informação, depuração, tudo ou o nível que você define.
Apênder Nome: é o nome do destino de saída de informações do log especificado.
Por exemplo: log4j.rootlogger = info, a1, b2, c3
Nas versões iniciais do Log4J, o org.apache.category implementou a função de um logger e, em seguida, estendeu a classe de categoria usando o Logger, para que o log4j.rootcategory também possa ser usado.
Por exemplo: log4j.rootcategory = info, a1, a2
2. Configure o Appender de destino para saída de informações de log
O Appender é responsável por controlar a saída das operações de registro, e sua sintaxe é:
log4j.appender.apndername = totalmente.qualified.name.of.appender.class
Entre eles, "totalmente.qualified.name.of.appender.class" tem os seguintes tipos:
i.org.apache.log4j.consoleppender (console)
Existem várias opções:
Limiar = aviso: especifica o nível mais baixo de saída das mensagens de log.
ImediateFlush = True: O valor padrão é verdadeiro, o que significa que todas as mensagens serão emitidas imediatamente.
Target = System.err: Por padrão, é: System.out, especifique o console de saída
ii.org.apache.log4j.fileppender (arquivo)
Existem várias opções:
Limiar = aviso: especifica o nível mais baixo de saída das mensagens de log.
ImediateFlush = True: O valor padrão é verdadeiro, o que significa que todas as mensagens serão emitidas imediatamente.
Arquivo = mylog.txt: especifica que a mensagem é emitida para o arquivo mylog.txt.
Append = false: o valor padrão é verdadeiro, o que significa adicionar a mensagem ao arquivo especificado.
iii.org.apache.log4j.dailyrollingFileAppender (gera um arquivo de log todos os dias)
Existem várias opções:
Limiar = aviso: especifica o nível mais baixo de saída das mensagens de log.
ImediateFlush = True: O valor padrão é verdadeiro, o que significa que todas as mensagens serão emitidas imediatamente.
Arquivo = A.Log: Especifica que a mensagem é emitida para o arquivo A.Log, que começa no caminho raiz do servidor da Web por padrão.
Append = false: o valor padrão é verdadeiro, o que significa adicionar a mensagem ao arquivo especificado.
DatePattern = '. Obviamente, você também pode especificar mensalmente, semana, dia, hora e minuto. Isto é, o formato correspondente é o seguinte:
'.'yyyy-mm: mensalmente
'.'yyyy-ww: semanalmente
'.'yyyy-mm-dd: todos os dias
'.'yyyy-mm-dd-a: duas vezes por dia
'.'yyyy-mm-dd-hh: a cada hora
'.'yyyy-mm-dd-hh-mm: por minuto
iv.org.apache.log4j.rollingFileAppender (um novo arquivo é gerado quando o tamanho do arquivo atinge o tamanho especificado. Você pode definir o tamanho do arquivo por log4j.appender.appendername.maxfilesize = 100kb)
Existem várias opções:
Limiar = aviso: especifica o nível mais baixo de saída das mensagens de log.
ImediateFlush = True: O valor padrão é verdadeiro, o que significa que todas as mensagens serão emitidas imediatamente.
Arquivo = A.Log: Especifica que a mensagem é emitida para o arquivo A.Log, que começa no caminho raiz do servidor da Web por padrão.
Append = false: o valor padrão é verdadeiro, o que significa adicionar a mensagem ao arquivo especificado.
Maxfilesize = 100kb: O sufixo pode ser KB, MB ou GB.
MaxbackupIndex = 2: Especifica o número máximo de arquivos de rolagem que podem ser gerados.
v.org.apache.log4j.writreppender (envie informações de log no formato de fluxo para qualquer local especificado)
Por exemplo:
log4j.appender.r = org.apache.log4j.dailyrollingFilePpender
log4j.appender.r.file = d: //eclipsspace//testssh//webcontent//web-inf//testlog.log
3. Configure o formato (layout) das informações do log
O layout é responsável por formatar a saída do Appender, e sua sintaxe é:
log4j.appender.apndername.layout = totalmente.qualified.name.of.layout.class
Entre eles, "totalmente.qualified.name.of.layout.class" tem os seguintes tipos:
i.org.apache.log4j.htmllayout (layout no formulário de tabela HTML)
Existem várias opções:
LocationInfo = true: o valor padrão é falso, emitir o nome do arquivo java e o número da linha
Título = meu arquivo de aplicativo: o valor padrão é as mensagens de log4j de log4j.
ii.org.apache.log4j.patternlayout (o modo de layout pode ser especificado com flexibilidade)
Existem várias opções:
ConversionPattern =%m%n: Especifica como formatar a mensagem especificada.
-X Número: Alinhamento esquerdo quando x informações são emitidas;
%P: a prioridade das informações do log de saída, ou seja, depuração, informações, aviso, erro, fatal,
%D: a data ou a hora do tempo de log é emitida. Semelhante: 18 de outubro de 2002 Dia 22:10:28, 921
%r: o número de milissegundos para a saída da inicialização do aplicativo para a saída desta informação de log
%C: A categoria à qual as informações do log de saída pertencem geralmente é o nome completo da classe
%t: emitir o nome do encadeamento que gera o evento de log
%L: o evento de log de saída ocorre no local da ocorrência de%C.%m (%f:%l), incluindo o nome da categoria, o encadeamento de ocorrência e o número de linhas no código. Exemplo: testlog4.main (testlog4.java:10)
%x: a saída do NDC (ambiente de diagnóstico NESHED) associado ao encadeamento atual, especialmente em aplicações como servlets Java com multi-customer e multi-threading.
%%: saída de um caractere "%"
%F: o nome do arquivo onde a mensagem de log de saída foi gerada
%L: Número da linha no código de saída
%m: a mensagem especificada no código de saída e as informações específicas de log geradas
% N: Saída Uma quebra de linha de retorno do carro, a plataforma do Windows é "/r/n", a plataforma Unix é "/n" para que a linha de informações de log de saída quebras podem ser adicionadas entre os caracteres % e o modo para controlar sua largura mínima e largura máxima. Largura e alinhamento de texto. como:
%20C: Especifica o nome da categoria de saída, a largura mínima é 20. Se o nome da categoria for menor que 20, será alinhado pela direita por padrão.
%-20C: Especifica o nome da categoria de saída.
%.30C: Especifique o nome da categoria de saída. sem espaços.
%20.30C: Se o nome da categoria for menor que 20, preencha o espaço e alinhe -se à direita.
Por exemplo: %-4r %-5p %d {yyyy-mm-dd hh: mm: sss} %c %m %n
[Teste]%P [%T]%C.%M (%L) |%M%n
iii.org.apache.log4j.simplelayout (contém o nível e a sequência de informações das informações do log)
iv.org.apache.log4j.ttcclayout (incluindo tempo, thread, categoria, etc. de geração de logs)
4 outros
log4j.logger.com
Especifique que todas as classes do pacote com.neusoft são depuração.
log4j.logger.com.opensymphony.oscache = erro
log4j.logger.net.sf.navigator = error
Essas duas frases definem o nível dos erros que ocorrem nesses dois pacotes como erro.
log4j.logger.org.apache.commons = erro
log4j.logger.org.apache.struts = warn
Essas duas frases são o pacote de suportes.
log4j.logger.org.displaytag = erro
Esta frase é o pacote DisplayTag. (Usado na página da lista de perguntas do QC)
log4j.logger.org.springframework = Debug
Esta frase é um pacote de primavera.
log4j.logger.org.hibernate.ps.PreparedStatementCache = Warn
log4j.logger.org.hibernate = Debug
Essas duas frases são o pacote de Hibernate.
3. Escreva logs em vários arquivos.
Configuração de log4j:
log4j.rootcategory = info, stdout
log4j.appender.stdout = org.apache.log4j.consoleppender
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [colorclouds]%p [%t]%C.%m (%l) |%M% n
log4j.logger.net.sf.navigator = info
log4j.logger.org.springframework = info
log4j.logger.runlogger = info, r
log4j.appender.r = org.apache.log4j.rollingFileAppender
log4j.appender.r.file = g: //log//runlog.log
log4j.appender.r.maxfilesize = 51200kb
#log4j.appender.r.file = $ {com.huawei.icity.webapp.root} /log/icity.log
log4j.appender.r.layout = org.apache.log4j.patternlayout
log4j.appender.r.layout.conversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [colorclouds run]%p [%t]%C.%m (%l) |%m %n
#log4j.logger.businessLogger = info, b
#log4j.appender.b = org.apache.log4j.rollingFileAppender
#log4j.appender.b.file = g: //log//businesslog.log
#log4j.appender.b.maxfilesize = 51200kb
#log4j.appender.b.layout = org.apache.log4j.patternlayout
#log4j.appender.b.layout.conversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [colorclouds negócios]%p [%t]%C.%m (%l) | m%n
log4j.logger.interfacelogger = info, i
log4j.appender.i = org.apache.log4j.rollingFileAppender
log4j.appender.i.file = g: //log//interfacelog.log
log4j.appender.i.maxfilesize = 51200kb
log4j.appender.i.layout = org.apache.log4j.patternlayout
log4j.appender.i.layout.conversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [interface colorclouds]%p [%t]%C.%m (%l) |%m %n
Chamada Java:
importar org.apache.commons.logging.log; getLog ("runlogger"); // Run Log private estático log interfacelog = logFactory.getLog ("interfacelogger"); // interface log public string execute (), exceto ion {interfacelog.info ("==== >> Solicitação "); runlog.info (" solicitação 02 "); retorna super.execute ();}}
A seguir, é apresentada uma maneira de configurar o log4j em um projeto da web
1. Altere dinamicamente o nível e a política recorde e não há necessidade de reiniciar o aplicativo da Web, conforme declarado em "Java Effeitor Enterprise".
2. Defina o arquivo de log como/web-inf/logs/sem gravar um caminho absoluto.
3. Você pode colocar log4j.properties e outras propriedades juntamente com / web-inf / em vez de path de classe.
Adicione web.xml
<!-Se o parâmetro WebApApRootKey não estiver definido, então o WebApprootKey é o padrão "webapp.root"->
<Cexexp-Param> <amam-name> webApAprootkey </amam-name> <amam-value> xxx.root </amam-value> </context-param> <Context-param> <amam-name> log 4jconfiglocation < /param-name> <amam-value> web-inf/log4j.properties </param-value> </context-param> <context-param> <amam-name> log4jrefreshinterval </param-name> <param-value > 60000 </param-value> </xectlent-param> <lister> <lister-class> org.springframework.web.util.log4jconfiglistener </lister-class> </lister>
Na configuração acima, o log4jconfigListener lerá o arquivo de configuração no web-inf/log4j.propeties;
Abra um encadeamento de Watchdog para digitalizar o arquivo de configuração muda a cada 60 segundos;
E pressione o caminho do diretório da web em uma variável do sistema chamada webapp.root.
Em seguida, o local do arquivo de log pode ser definido em log4j.properties
log4j.appender.logfile.file = $ {webapp.root} /web-inf/logs/myfuse.log
Se houver vários aplicativos da Web e temer que as variáveis do WebApp.root sejam repetidas, você poderá definir o WebAppRootKey no contexto-param.
O exposto acima são as habilidades deste artigo para analisar a configuração do Java Log4J e configurar o LOG4J em projetos da Web.