sábado, 16 de novembro de 2013

Como Salvar o Arquivo de Log do Log4j2 no Diretório APPDATA do Usuário

O cenário aqui é o seguinte: você tem uma aplicação desktop que precisar gerar log e quer que esses sejam impressos em um arquivo de log. Para esta tarefa, está usando o LOG4J2.

O problema é que você não pode mandar logar na pasta onde o software está executando, porque se ele estiver em Arquivos de Programas pode ser que não tenha permissão de escrita.

Então, o local ideal para escrever é em uma pasta do usuário, onde os arquivos dos aplicativos normalmente são escritos. No meu caso, eu queria o diretório APPDATA. Depois de muito custo conseguir descobrir como. Abaixo está o meu arquivo log4j2.xml.


<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" name="MyApp" packages="">
    <Appenders>
        <File name="MyFile" fileName="${env:APPDATA}/logs/app.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="MyFile" />
        </Root>
    </Loggers>
</Configuration>