Ok. The solution I proposed seems straightforward to me, and it indeed allows you to use external properties files. Have you tried it?
On Mon, Apr 22, 2013 at 10:42 PM, Suriyanto <[email protected]> wrote: > Tony, > > Thanks again for giving all the details. At this time, I need to use the > external properties file which looks like is located using the working > directory. As there is no straight forward solution, I will make sure to > have the users to change into the directory of the jar file before calling > the application. > > Thanks, > Suriyanto > > > On Mon, Apr 22, 2013 at 5:15 PM, Tony Trinh <[email protected]> wrote: > >> I should note: >> >> For this method to work, be sure to use the "resource" attribute instead >> of "file": >> >> <property resource="log.properties" /> >> >> >> >> On Mon, Apr 22, 2013 at 7:12 PM, Tony Trinh <[email protected]> wrote: >> >>> Hi Suriyanto, >>> >>> I should've been clearer in my earlier email. You should update your >>> application jar's manifest (not SLF4J or logback) to specify a default >>> classpath (using the "Class-Path" entry in META-INF/MANIFEST.MF). This is >>> usually done as part of your application's build configuration. The >>> following links (copied from previous email) provide an example in Ant and >>> Maven. >>> >>> [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 >>> >>> For testing purposes, you could add to your classpath from the command >>> line as shown in the following example: >>> >>> unix: >>> $ java -cp /dir:/dir/myapp.jar MyApp >>> >>> windows: >>> C:\> java -cp C:\dir;C:\dir\myapp.jar MyApp >>> >>> (assuming "MyApp" is the main class, and "/dir" is the directory that >>> contains log.properties and myapp.jar) >>> >>> ...but you wouldn't need this if you've added to the classpath from your >>> application jar's manifest. >>> >>> >>> -Tony >>> >>> >>> On Sun, Apr 21, 2013 at 12:23 AM, Suriyanto <[email protected]> wrote: >>> >>>> Hi Tony, >>>> >>>> I believe I found the issue. >>>> >>>> I have the jar and the properties file inside dir1. I am calling the >>>> jar from the parent directory of dir1 using the command below: >>>> >>>> java -jar dir1/myapp.jar >>>> >>>> I believe this caused logback to try to find the properties file on the >>>> current directory, which is the parent of dir1. Is there a way for logback >>>> to be able to constantly loading the properties from the same directory >>>> that the jar is in? >>>> >>>> Thanks, >>>> Suriyanto >>>> >>>> >>>> On Sat, Apr 20, 2013 at 9:25 AM, Tony Trinh <[email protected]> wrote: >>>> >>>>> 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 <[email protected]>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 <[email protected]> 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 <[email protected]>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 <[email protected]>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 <[email protected]>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 >>>>>>>>>> [email protected] >>>>>>>>>> http://mailman.qos.ch/mailman/listinfo/logback-user >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Logback-user mailing list >>>>>>>>> [email protected] >>>>>>>>> http://mailman.qos.ch/mailman/listinfo/logback-user >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Logback-user mailing list >>>>>>>> [email protected] >>>>>>>> http://mailman.qos.ch/mailman/listinfo/logback-user >>>>>>>> >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Logback-user mailing list >>>>>>> [email protected] >>>>>>> http://mailman.qos.ch/mailman/listinfo/logback-user >>>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Logback-user mailing list >>>>>> [email protected] >>>>>> http://mailman.qos.ch/mailman/listinfo/logback-user >>>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Logback-user mailing list >>>>> [email protected] >>>>> http://mailman.qos.ch/mailman/listinfo/logback-user >>>>> >>>> >>>> >>>> _______________________________________________ >>>> Logback-user mailing list >>>> [email protected] >>>> http://mailman.qos.ch/mailman/listinfo/logback-user >>>> >>> >>> >> >> _______________________________________________ >> Logback-user mailing list >> [email protected] >> http://mailman.qos.ch/mailman/listinfo/logback-user >> > > > _______________________________________________ > Logback-user mailing list > [email protected] > http://mailman.qos.ch/mailman/listinfo/logback-user >
_______________________________________________ Logback-user mailing list [email protected] http://mailman.qos.ch/mailman/listinfo/logback-user
