Leitura arquivo Java

Boa noite pessoal, estou desenvolvimento um sistema e preciso efetuar a leitura dos logs do servidor glassfish, no caso preciso organizar esse log, porém gostaria de saber se alguém já tem algum algoritmo pronto para isso, vou explicar o que preciso de fato.

Temos o arquivo log.txt.

Vou pegar a primeira linha:

[#|2013-04-05T11:27:45.894-0300|INFO|sun-appserver2.1|javax.enterprise.system.core.security|_ThreadID=10;_ThreadName=main;com.sun.enterprise.security.provider.PolicyWrapper;|SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.|#]

Veja que é possível analisar que inicia com [# e termina com #], porém existem informações separadas por |, então eu preciso separar esses conteudos.

att.

String linha = "[#|2013-04-05T11:27:45.894-0300|INFO|sun-appserver2.1|javax.enterprise.system.core.security|_ThreadID=10;_ThreadName=main;com.sun.enterprise.security.provider.PolicyWrapper;|SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.|#] ";
Pattern pat = Pattern.compile ("\\[#.*#\\]");
...
Matcher mat = pat.matcher (linha);
if (mat.find()) {
    String info = mat.group(); // o que está entre [# #]
    String[] campos = info.split ("\\|"); 
...