I did implement an eager loading module a while ago. The nice thing about
that was you could also change the log levels dynamically, but after a
while maintaining it became too much work.

I like the stdout idea. It's simple and I was thinking about moving all my
logging to Apache Kafka so I could combine logs and do some analysis. This
way I can just pipe it to Kafka


Thanks


On Tuesday, July 28, 2015, Thilo Tanner <thilo.tan...@reprisk.com> wrote:

> Hi Barry,
>
> As an example, we use two different strategies (depending on what we need):
>
> Easy solution:
> Create an executable WAR file and configure a normal console logger which
> writes everything to stdout. From there you pipe the log messages to a file
> of your choice. Something like:
>
> exec $JAVA_HOME/bin/java -jar $JAR >> $LOG 2>&1 &
>
> Less easy solution:
> Create an eager loading logging configuration service which configures the
> logging system according to your needs (for example output to a data
> directory which is configured via a T5 symbol). Logback for example is easy
> to configure programmatically.
>
> Either way, I strongly recommend to use a centralized system to collect
> all your logs (for example ELK), especially if you consider to distribute
> your application.
>
> Best,
> Thilo
>
>
>
>
>
> Am 28.07.15 14:04 schrieb "Barry Books" unter <trs...@gmail.com
> <javascript:;>>:
>
> >How do you handle logging configuration? At first I used different
> >log4j.properties files and specified which one to use on the command line
> >but now I often deploy Jenkins in the same Tomcat so I switched to messing
> >with the class path to get the right properties file. Neither solution is
> >ideal. Anyone come up with anything else?
> >
> >
> >
> >On Tuesday, July 28, 2015, Dmitry Gusev <dmitry.gu...@gmail.com
> <javascript:;>> wrote:
> >
> >> Got it, thank you.
> >>
> >> This is exactly how we do it currently with standalone tomcat, with one
> >> difference -- we implemented our own symbol resolution strategy to get
> >> symbols from an external file, instead of passing them all through
> command
> >> line.
> >>
> >> I was just curios if somebody created some tapestry module with
> predefined
> >> set of tapestry symbols that would start & configure container for us.
> >> This way we could still be able to override some symbols when needed as
> we
> >> usually do in tapestry.
> >>
> >>
> >>
> >> On Tue, Jul 28, 2015 at 2:11 PM, Thilo Tanner <thilo.tan...@reprisk.com
> <javascript:;>
> >> <javascript:;>>
> >> wrote:
> >>
> >> > Hi Dmitry,
> >> >
> >> > In our case, yes we hardcode and commit those credentials to our
> >> > repositories. In my defense, we host all our code in-house and have
> >> various
> >> > other security measures in place. Database credentials are normally
> >> > different from client host to client host and therefore such
> credentials
> >> > are normally useless unless you also have access to this particular
> host.
> >> >
> >> > If you prefer to set your credentials directly on your host, use
> symbols
> >> > (as described in the previous email) and make sure to correctly unset
> the
> >> > shell environment variables after application startup. You could do
> >> > something like this in your startup script:
> >> >
> >> > java -Dmyapp.db.username=DB_USERNAME -Dmyapp.db.password=DB_PASSWORD
> -jar
> >> > myapp.jar
> >> >
> >> > where myapp.db.username and myapp.db.password are user-defined T5
> >> symbols.
> >> >
> >> > Using such a strategy, you can avoid committing your credentials.
> >> >
> >> > Best,
> >> > Thilo
> >> >
> >> > --
> >> > Thilo Tanner
> >> > Technology Lead
> >> >
> >> > Direct +41 43 300 54 42
> >> > Mobile +41 79 506 46 36
> >> > thilo.tan...@reprisk.com <javascript:;> <javascript:;>
> >> >
> >> > RepRisk AG, Stampfenbachstrasse 42, 8006 Zurich, Switzerland
> >> > Tel. +41 43 300 54 40, Fax +41 43 300 54 46
> >> > www.reprisk.com
> >> >
> >> > Follow us on Facebook or Twitter:
> >> > www.facebook.com/RepRisk | www.twitter.com/RepRisk
> >> >
> >> > If you are not the intended recipient, please notify the sender -
> thank
> >> > you.
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > Am 28.07.15 12:54 schrieb "Dmitry Gusev" unter <
> dmitry.gu...@gmail.com <javascript:;>
> >> <javascript:;>>:
> >> >
> >> > >Hi Thilo,
> >> > >
> >> > >So you're hardcoding all your staging/production settings in special
> >> > >tapestry modules,
> >> > >and committing them to the same source code repository as your app's
> >> > >codebase, right?
> >> > >
> >> > >
> >> > >On Tue, Jul 28, 2015 at 1:47 PM, Thilo Tanner <
> thilo.tan...@reprisk.com <javascript:;>
> >> <javascript:;>>
> >> > >wrote:
> >> > >
> >> > >> Hi Dmitry,
> >> > >>
> >> > >> To configure our apps, we mainly use what Tapestry offers
> >> > out-of-the-box.
> >> > >> I recommend to create a dedicated Tapestry module for each of your
> >> > >> environments as described here:
> >> > >>
> >> >
> >>
> http://tapestry.apache.org/configuration.html#Configuration-SettingExecutionModes
> >> > >>
> >> > >> In such a module, you can override your database settings for
> example.
> >> > >>
> >> > >> Additional environment modules are then easy to load via command
> line.
> >> > For
> >> > >> example:
> >> > >>
> >> > >> java -Dtapestry.execution-mode=staging -jar myapp.war
> >> > >>
> >> > >> Compared to other injection containers, Tapestry’s IOC has lots of
> >> > >> built-in features that will help you configuring your application.
> >> > Another
> >> > >> concept worth mentioning here are Symbols:
> >> > >> http://tapestry.apache.org/symbols.html
> >> > >> Symbols can be predefined, but also overridden during application
> >> > startup
> >> > >> (in fact, tapestry.execution-mode is a built-in T5 symbol used to
> load
> >> > >> additional modules during startup)
> >> > >>
> >> > >> Best,
> >> > >> Thilo
> >> > >>
> >> > >>
> >> > >>
> >> > >>
> >> > >> Am 28.07.15 12:06 schrieb "Dmitry Gusev" unter <
> >> dmitry.gu...@gmail.com <javascript:;> <javascript:;>
> >> > >:
> >> > >>
> >> > >> >Hi Thilo,
> >> > >> >
> >> > >> >and how in this case you configure your executable JAR?
> >> > >> >
> >> > >> >Are you using maven profiles & that war file contains all
> >> > configuration,
> >> > >> >or you create "universal" binary and provide configuration at
> runtime
> >> > via
> >> > >> >system properties or external .properties file?
> >> > >> >
> >> > >> >I know this should be pretty easy to code, just wondering if
> there's
> >> > >> >anything ready that may be reused without reinventing the wheel.
> >> > >> >
> >> > >> >On Tue, Jul 28, 2015 at 12:30 PM, Thilo Tanner <
> >> > thilo.tan...@reprisk.com <javascript:;> <javascript:;>>
> >> > >> >wrote:
> >> > >> >
> >> > >> >> Hi Dmitry,
> >> > >> >>
> >> > >> >> Yes, we are running T5.4 apps in production by embedding
> Undertow
> >> > >> (Servlet
> >> > >> >> container from Wildfly). With Tapestry, such a setup is
> relatively
> >> > easy
> >> > >> to
> >> > >> >> achieve:
> >> > >> >>
> >> > >> >> You create an application class that bootstraps the Tapestry
> filter
> >> > in
> >> > >> >> Undertow:
> >> > >> >>
> >> > >>
> >> >
> >>
> http://undertow.io/undertow-docs/undertow-docs-1.2.0/index.html#creating-a-servlet-deployment
> >> > >> >>
> >> > >> >> Such a class will allow you to start your T5 app directly from a
> >> main
> >> > >> >> method (great for development).
> >> > >> >>
> >> > >> >> For a deployment, you can use the two following Maven plugins to
> >> > >> generate
> >> > >> >> „executable WAR files“:
> >> > >> >>
> >> > >> >> maven-war-plugin
> >> > >> >> Define the main class in the manifest file (pointing to your
> >> > bootstrap
> >> > >> >> class above)
> >> > >> >>
> >> > >> >> spring-boot-maven-plugin
> >> > >> >> The plugin will repackage your WAR file to make it executable
> (by
> >> > using
> >> > >> >> java -jar myapp.war); WAR files per-se are not directly
> executable.
> >> > >> >>
> >> > >> >>
> >> > >> >> If you’re interested in such a solution, I can post more details
> >> > here.
> >> > >> >>
> >> > >> >> Best regards,
> >> > >> >> Thilo
> >> > >> >>
> >> > >> >>
> >> > >> >>
> >> > >> >>
> >> > >> >>
> >> > >> >>
> >> > >> >> Am 28.07.15 11:09 schrieb "Dmitry Gusev" unter <
> >> > dmitry.gu...@gmail.com <javascript:;> <javascript:;>
> >> > >> >:
> >> > >> >>
> >> > >> >> >Hello,
> >> > >> >> >
> >> > >> >> >Do you run tapestry apps in embedded container in production?
> >> > >> >> >
> >> > >> >> >If yes, how do you configure embedded container (ports, SSL,
> >> valves,
> >> > >> >> etc.)?
> >> > >> >> >
> >> > >> >> >Maybe there's some tapestry integration that configures tomcat
> >> > instance
> >> > >> >> >using tapestry-ioc and symbols?
> >> > >> >> >
> >> > >> >> >--
> >> > >> >> >Dmitry Gusev
> >> > >> >> >
> >> > >> >> >AnjLab Team
> >> > >> >> >http://anjlab.com
> >> > >> >>
> >> > >> >
> >> > >> >
> >> > >> >
> >> > >> >--
> >> > >> >Dmitry Gusev
> >> > >> >
> >> > >> >AnjLab Team
> >> > >> >http://anjlab.com
> >> > >>
> >> > >
> >> > >
> >> > >
> >> > >--
> >> > >Dmitry Gusev
> >> > >
> >> > >AnjLab Team
> >> > >http://anjlab.com
> >> >
> >>
> >>
> >>
> >> --
> >> Dmitry Gusev
> >>
> >> AnjLab Team
> >> http://anjlab.com
> >>
>

Reply via email to