[logback-user] External property file

Tony Trinh tony19 at gmail.com
Sat Apr 20 18:25:00 CEST 2013


I'm not sure why that quick test (using the "file" attribute, and running
the jar from the same directory as log.properties) did not work for you. It
worked for me in OSX Mountain Lion and JDK 6. The PropertyAction [1] passes
the "file" attribute's value directly to FileInputStream [2], which uses
File [3]. The Oracle javadocs should provide more details.

It turns out the "resource" attribute should also work in this case (I've
confirmed on my machine). This uses ClassLoader.getResource(), whose search
order is defined by [4]. You need to include the directory of
log.properties in the jar's classpath either by command-line or from the
jar's manifest [5][6].

[1]
https://github.com/qos-ch/logback/blob/master/logback-core/src/main/java/ch/qos/logback/core/joran/action/PropertyAction.java#L72
[2] http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html
[3] http://docs.oracle.com/javase/6/docs/api/java/io/File.html
[4]
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29
[5]
http://stackoverflow.com/questions/9532716/adding-the-current-directory-to-a-jar-files-classpath
[6]
http://stackoverflow.com/questions/4126030/executable-jar-wont-find-the-properties-files


On Sat, Apr 20, 2013 at 12:08 AM, Suriyanto <suriyanto at gmail.com> wrote:

> Thanks again, Tony.
>
> Yes, if I use absolute path, it will work. However I want to use the
> relative path so the user can put the jar and properties file anywhere as
> long as they are put in the same directory.
>
> I tried to cd to dir and run from there, but logback still tells me that
> it cannot find the properties file. Is there a way for me to know what the
> absolute mapping that logback use when I provide a relative path?
>
> Thanks.
>
>
> On Fri, Apr 19, 2013 at 9:15 PM, Tony Trinh <tony19 at gmail.com> wrote:
>
>> Ok. The file-lookup is relative to your current working directory (unless
>> you use absolute paths). You can confirm by cd'ing into /dir and then
>> invoking your jar.
>>
>> An alternative is to use an absolute path to a designated "data"
>> directory (with environment variables). For example:
>>
>>     <property file="${HOME}/.myapp/log.properties" />
>>      <property file="${APPDATA}/.myapp/log.properties" />
>>     <property file="${PROGRAMFILES}/MyApp/log.properties" />
>>
>>
>>
>>
>> On Fri, Apr 19, 2013 at 9:22 PM, Suriyanto <suriyanto at gmail.com> wrote:
>>
>>> Thanks for answering.
>>>
>>> I actually wanted to put the file outside the jar so the user can easily
>>> modify it for any of their environment. The file will be on the same
>>> directory as the jar file.
>>>
>>> /dir
>>>     myapp.jar
>>>     log.properties
>>>
>>> Suriyanto
>>>
>>>
>>> On Fri, Apr 19, 2013 at 7:00 PM, Tony Trinh <tony19 at gmail.com> wrote:
>>>
>>>> If the file is in your JAR, you should be using the "resource"
>>>> attribute instead of "file" (which searches your host filesystem).
>>>>
>>>>   <property resource="log.properties" />
>>>>
>>>>
>>>> On Fri, Apr 19, 2013 at 8:39 PM, Suriyanto <suriyanto at gmail.com> wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I am following the instruction in the Logback manual to use an
>>>>> external property file.
>>>>>
>>>>> <property file="log.properties" />
>>>>>
>>>>> I have log.properties file in the same directory as my executable jar
>>>>> file, which are created as an uber jar file from Maven plugin.
>>>>>
>>>>> However, I keep getting the error: ERROR in
>>>>> ch.qos.logback.core.joran.action.PropertyAction - Could not find properties
>>>>> file [log.properties].
>>>>>
>>>>> Am I putting the file in the correct directory?
>>>>>
>>>>> Thanks,
>>>>> Suriyanto
>>>>>
>>>>> _______________________________________________
>>>>> Logback-user mailing list
>>>>> Logback-user at qos.ch
>>>>> http://mailman.qos.ch/mailman/listinfo/logback-user
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Logback-user mailing list
>>>> Logback-user at qos.ch
>>>> http://mailman.qos.ch/mailman/listinfo/logback-user
>>>>
>>>
>>>
>>> _______________________________________________
>>> Logback-user mailing list
>>> Logback-user at qos.ch
>>> http://mailman.qos.ch/mailman/listinfo/logback-user
>>>
>>
>>
>> _______________________________________________
>> Logback-user mailing list
>> Logback-user at qos.ch
>> http://mailman.qos.ch/mailman/listinfo/logback-user
>>
>
>
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/logback-user/attachments/20130420/b89e2809/attachment.html>


More information about the Logback-user mailing list