在glassfish里面运行tinylog

时间:2012-09-08 10:03:02

标签: java logging glassfish tinylog

我正试图在glassfish 3.1.2.2中运行tinylog。首先,我将tinylog.jar复制到/glassfish3/glassfish/domains/domain1/lib。其次,我在tinylog.properties内创建了domain1/configtinylog.properties是这样的:

tinylog.format={date}-[{class}:{method}:{line}]-{level}-{message}
tinylog.writer=rollingfile
tinylog.writer.filename=log.txt
tinylog.writer.backups=5
tinylog.writer.label=count
tinylog.writer.policies=size: 10KB

我的应用程序是一个简单的Web服务:

@WebService
public class Calculator {
    @WebMethod
    public int sum(int a, int b) {
        Logger.info("new request. a = {0}, b = {1}", a, b);
        return a + b;
    }
}

现在,当我运行Web服务时,它可以运行并返回结果。但是日志在logs/server.log内,如下所示:

[#|2012-09-08T14:15:03.801+0430|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=175;_ThreadName=Thread-2;|2012-09-08 14:15:03 [http-thread-pool-8080(1)] com.argengco.tiny.Calculator.sum()
INFO: new request. a = 43, b = 7
|#]

因为tinylog默认将日志写入stdout并且glassfish将stdout重定向到javax.enterprise.system.std.com.sun.enterprise.server.logging记录器,所以似乎tinylog没有找到tinylog.properties。我在server.log中没有看到任何允许无法打开tinylog.properties的权限错误。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果/ glassfish3 / glassfish / domains / domain1是源构建树的根(即它包含com / blah / blah),那么您需要:

1)将tinylog.properties文件放在该目录中

2)致电PropertiesLoader.loadFromFile("config/tinylog.properties");

我在尝试自己找到答案后遇到了你的问题。在使用一些调试消息重建源代码之后(稍微讽刺!)我找到了答案。

在我的情况下,我有一个src / com / blah / blah目录结构。在这种情况下,tinylog.properties文件需要进入src /目录。