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
