Actually, you shouldn't write
anything into the webapp itself. For a strict
J2EE implementation, that would require cracking open the WAR file and updating it. Even when dealing with "exploded" WARs, there are problems, as you have so astutely observed.
Windows has no standard place to put logs. You're on your own there.
In Linux, there are coventional locations:
/var/log is used to hold log files (and directories) for system applications
/var/lib/appname is common usage for applications with a lot of infrastructure.
/opt is also common for third-party apps. I've been known to use things like "/opt/com/mousetech/appname", for example.
/usr/local/appname is a legacy base. My
Tomcat logs, for example, are in /usr/local/tomcat6/logs/catalina.out,
etc. This is not recommended, however, since properly speaking, /usr/local should be read-only these days. Some configurations put the /usr/local/tomcat6/logs as a softlink to someplace like /var/lib/tomcat6/logs
/srv is a relatively new location for server stuff.
On the whole, /var is the best root for logfiles, since it's the conventional place to put things that grow. Where exactly under /var you put things is subject to debate. My own practice would generally be /var/lib/mywebapp/logs, but YMMV.
It is in the best interest of your hosting provider to agree on
somewhere, however!