jetpack 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. data/.gitignore +2 -1
  2. data/LICENSE +14 -0
  3. data/README.markdown +35 -6
  4. data/Rakefile +14 -3
  5. data/bin/jetpack +39 -6
  6. data/bin_files/launch.erb +16 -0
  7. data/gems/bundler-1.1.0.gem +0 -0
  8. data/jetpack.gemspec +3 -3
  9. data/jetty_files/etc/fake.crt +31 -0
  10. data/jetty_files/etc/fake.jceks +0 -0
  11. data/jetty_files/etc/fake.key +51 -0
  12. data/jetty_files/etc/fake.pem +89 -0
  13. data/jetty_files/etc/jetty.xml.erb +53 -25
  14. data/jetty_files/jetty-init.erb +4 -0
  15. data/lib/jetpack/settings.rb +24 -10
  16. data/script/ci +1 -1
  17. data/spec/bundler_spec.rb +1 -1
  18. data/spec/filter_spec.rb +59 -0
  19. data/spec/rack_spec.rb +40 -0
  20. data/spec/sample_projects/has_gems_via_bundler/config/jetpack.yml +1 -1
  21. data/spec/sample_projects/has_gems_via_bundler_19/config/jetpack.yml +1 -1
  22. data/spec/sample_projects/has_gems_via_bundler_bad_gemfile_lock/config/jetpack.yml +1 -1
  23. data/spec/sample_projects/no_dependencies/config/jetpack.yml +1 -1
  24. data/spec/sample_projects/rack_19/Gemfile +3 -0
  25. data/spec/sample_projects/rack_19/Gemfile.lock +11 -0
  26. data/spec/sample_projects/rack_19/config.ru +8 -0
  27. data/spec/sample_projects/rack_19/config/jetpack.yml +9 -0
  28. data/spec/sample_projects/webapp/config/jetpack.yml +8 -5
  29. data/spec/sample_projects/webapp_filters/Gemfile +3 -0
  30. data/spec/sample_projects/webapp_filters/Gemfile.lock +88 -0
  31. data/spec/sample_projects/webapp_filters/app/controllers/application_controller.rb +5 -0
  32. data/spec/sample_projects/webapp_filters/config.ru +4 -0
  33. data/spec/sample_projects/webapp_filters/config/application.rb +46 -0
  34. data/spec/sample_projects/webapp_filters/config/boot.rb +6 -0
  35. data/spec/sample_projects/webapp_filters/config/environment.rb +5 -0
  36. data/spec/sample_projects/webapp_filters/config/environments/development.rb +25 -0
  37. data/spec/sample_projects/webapp_filters/config/environments/test.rb +35 -0
  38. data/spec/sample_projects/webapp_filters/config/initializers/secret_token.rb +7 -0
  39. data/spec/sample_projects/webapp_filters/config/jetpack.yml +10 -0
  40. data/spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/custom-project-specific-jetty.xml +5 -0
  41. data/spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/template-from-project-jetty.xml.erb +9 -0
  42. data/spec/sample_projects/webapp_filters/config/routes.rb +60 -0
  43. data/spec/sample_projects/webapp_filters/public/index.html +239 -0
  44. data/spec/sample_projects/webapp_filters/script/rails +6 -0
  45. data/spec/spec_helper.rb +0 -7
  46. data/spec/web_spec.rb +25 -9
  47. data/src/java/jetpack/filter/IgnoreUnknownHttpMethodsFilter.java +43 -0
  48. data/src/java/jetpack/filter/ValidUrlFilter.java +62 -0
  49. data/web_inf_files/web.xml.erb +46 -4
  50. metadata +110 -32
  51. data/gems/bundler-1.0.18.gem +0 -0
  52. data/gems/bundler-1.1.rc.gem +0 -0
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  spec/local_mirror
2
2
  pkg
3
+ .rvmrc
3
4
  .idea/*
4
- .DS_STORE
5
+ .DS_STORE
data/LICENSE ADDED
@@ -0,0 +1,14 @@
1
+ Copyright 2012 Square Inc.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+
@@ -1,14 +1,33 @@
1
1
  # Jetpack
2
2
 
3
- Jetpack prepares your (j)ruby project for jvm deployment.
3
+ jet.pack: package your JRuby webapp for Jetty.
4
4
 
5
- Jetpack, as much as possible, uses standard ruby-world tools to prepare the app for deployment, and then presents the ruby app to jetty as a Java EE web application.
5
+ There are already many tools in existence that help developers run JRuby webapps on popular servlet containers,
6
+ such as [trinidad](https://github.com/trinidad/trinidad), [warbler](https://github.com/jruby/warbler), [mizuno](https://github.com/matadon/mizuno), and [kirk](https://github.com/strobecorp/kirk).
7
+ Jetpack is not fundamentally different from these tools: like the rest of them it uses the [jruby-rack](https://github.com/jruby/jruby-rack) jar as a foundation. The key differences are stylistic.
8
+
9
+ Jetpack:
10
+
11
+ * Uses [Jetty](http://jetty.codehaus.org/jetty/)... in all of its
12
+ out-of-the-box, XML-configuration-file glory.
13
+ * Uses bundler to "vendor" all of your gems.
14
+ * Uses the [jruby-complete jar](http://jruby.org/download), and provides
15
+ convenience wrapper scripts (`bin/ruby` and `bin/rake`) in your project.
16
+ * Does not attempt to run Jetty in a ruby-first, embedded manner.
17
+ * Does not assume JRuby is already installed in your server environment (a
18
+ basic JRE will do just fine).
19
+ * Does not force your ruby webapp to load files from a jar or war.
20
+
21
+ In short, Jetpack creates a little self-contained JRuby/Jetty/vendored-gem world around your ruby project,
22
+ which you only need to transport to a server and fire up using a JRE.
23
+
24
+ Jetpack's implementation mainly consists of an [honest, proletarian, bash-like ruby script](https://github.com/square/jetpack/blob/master/bin/jetpack).
6
25
 
7
26
  ## Install
8
27
 
9
28
  Deploys need to be performed using MRI. Here is a sample section of a project Gemfile:
10
29
 
11
- platforms :ruby_19 do
30
+ platforms :mri do
12
31
  gem 'jetpack'
13
32
  end
14
33
 
@@ -21,11 +40,21 @@ Create `config/jetpack.yml` in your project:
21
40
  app_user: "myapp"
22
41
  app_root: "/usr/local/myapp/myapp"
23
42
 
24
- Run jetpack:
43
+ Some other settings you might care about:
44
+
45
+ java_options: "-Xmx2048m"
46
+ http_port: 4080
47
+ https_port: 4443
48
+ max_concurrent_connections: 20
49
+ ruby_version: 1.8
50
+ app_type: rack
51
+ keystore_type: JCEKS
52
+ keystore: /data/app/secrets/mystore.jceks
53
+ keystore_password: sekret
25
54
 
26
- gem install jetpack
55
+ Run Jetpack:
27
56
 
28
- jetpack [your project directory]
57
+ bundle exec jetpack .
29
58
 
30
59
  Of note, you'll now have:
31
60
 
data/Rakefile CHANGED
@@ -1,5 +1,14 @@
1
1
  require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
+ require 'rspec/core/rake_task'
4
+
5
+ task :default => :spec
6
+
7
+ desc "Run all specs in spec directory"
8
+ RSpec::Core::RakeTask.new(:spec => "spec:setup") do |t|
9
+ t.skip_bundler = true
10
+ t.pattern = "./spec/**/*_spec.rb"
11
+ end
3
12
 
4
13
  namespace :spec do
5
14
  desc "Download required support files for running specs."
@@ -9,8 +18,10 @@ namespace :spec do
9
18
  `curl #{url} > #{local_path}` unless File.exists?(local_path)
10
19
  end
11
20
 
12
- local_mirror "http://jruby.org.s3.amazonaws.com/downloads/1.6.4/jruby-complete-1.6.4.jar"
13
- local_mirror "http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-hightide/7.4.5.v20110725/jetty-hightide-7.4.5.v20110725.zip"
14
- local_mirror "http://repo1.maven.org/maven2/org/jruby/rack/jruby-rack/1.0.10/jruby-rack-1.0.10.jar"
21
+ FileUtils.mkdir_p "spec/local_mirror" unless File.directory?("spec/local_mirror")
22
+
23
+ local_mirror "http://jruby.org.s3.amazonaws.com/downloads/1.6.7/jruby-complete-1.6.7.jar"
24
+ local_mirror "http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-hightide/8.1.3.v20120416/jetty-hightide-8.1.3.v20120416.zip"
25
+ local_mirror "http://repo1.maven.org/maven2/org/jruby/rack/jruby-rack/1.1.5/jruby-rack-1.1.5.jar"
15
26
  end
16
27
  end
@@ -49,13 +49,16 @@ end
49
49
 
50
50
  script_start_time = Time.now
51
51
 
52
- @jruby_jar_file = "vendor/jruby.jar"
53
- @jetpack_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
52
+ @jruby_jar_file = "vendor/jruby.jar"
53
+ @jetpack_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
54
54
 
55
55
  @gem_home = "file:" + File.expand_path(File.join(@settings.app_root, @jruby_jar_file)) + "!/META-INF/jruby.home/lib/ruby/gems/1.8"
56
56
  @gem_path = @gem_home + ":vendor/bundler_gem"
57
57
 
58
- @java_dash_jar = "PATH=$PATH:$(dirname $0) GEM_HOME=\"#{@gem_home}\" GEM_PATH=\"#{@gem_path}\" exec java #{@settings.java_options} -jar"
58
+ # Don't set min memory size when making the build artifact
59
+ @jar_build_options = @settings.java_options.gsub(/(\s*)-Xms\S+/,'\1')
60
+
61
+ @java_dash_jar = "PATH=$PATH:$(dirname $0) GEM_HOME=\"#{@gem_home}\" GEM_PATH=\"#{@gem_path}\" exec java #{@jar_build_options} -jar"
59
62
  @jruby_opts = @settings.ruby_version.to_s == '1.9' ? '--1.9' : ''
60
63
 
61
64
  def jruby!(cmd)
@@ -72,7 +75,7 @@ end
72
75
 
73
76
  def install_bundler_gem
74
77
  unless File.exists?("#{@path_to_project}/vendor/bundler_gem")
75
- jruby! " -S gem install #{@jetpack_dir}/gems/bundler-1.1.rc.gem -i vendor/bundler_gem --no-rdoc --no-ri"
78
+ jruby! " -S gem install #{@jetpack_dir}/gems/bundler-1.1.0.gem -i vendor/bundler_gem --no-rdoc --no-ri"
76
79
  end
77
80
  end
78
81
 
@@ -96,7 +99,7 @@ def bundle_install
96
99
  install_bundler_gem
97
100
  regenerate_gemfile_lock_if_platform_java_is_not_found
98
101
  #Do the equivalent of 'bundle' in code so we know exactly which bundler we're using.
99
- jruby! " -e 'require \"rubygems\"; require \"bundler\"; require \"bundler/cli\"; cli=Bundler::CLI.new; cli.options={:deployment=>true}; cli.install'"
102
+ jruby! " -e 'require \"rubygems\"; require \"bundler\"; require \"bundler/cli\"; cli=Bundler::CLI.new; cli.options={:deployment=>true, :without=> [\"test\", \"cucumber\"]}; cli.install'"
100
103
  end
101
104
 
102
105
  def install_jetty(vendor_dir)
@@ -110,6 +113,16 @@ def install_jetty(vendor_dir)
110
113
  jetty_dir
111
114
  end
112
115
 
116
+ def install_commons_validator(lib_dir)
117
+ commons_validator_zip = File.join(lib_dir, "commons-validator.zip")
118
+ download "http://mirrors.axint.net/apache//commons/validator/binaries/commons-validator-1.4.0-bin.zip", commons_validator_zip
119
+ unzip commons_validator_zip, lib_dir
120
+ mv File.join(lib_dir, "commons-validator-1.4.0", "commons-validator-1.4.0.jar"), lib_dir
121
+ rm_rf(File.join(lib_dir, "commons-validator-1.4.0"))
122
+ rm commons_validator_zip
123
+ lib_dir
124
+ end
125
+
113
126
  def install_jruby_rack_jar(vendor_dir)
114
127
  download @settings.jruby_rack, File.join(vendor_dir, "jruby-rack.jar")
115
128
  end
@@ -136,7 +149,7 @@ end
136
149
 
137
150
  def overlay_files(overlay_dir, target_dir)
138
151
  files_created = note_files_created(target_dir) do
139
- x! "cp -pR #{overlay_dir}/ #{target_dir}/"
152
+ FileUtils.cp_r(Dir.glob("#{overlay_dir}/**/{*,.[^.]*}"), target_dir, :preserve => true)
140
153
  end
141
154
 
142
155
  process_template_files files_created.select{|f|f=~/\.erb$/}
@@ -159,7 +172,27 @@ if @settings.jetty?
159
172
 
160
173
  web_inf_dir = File.join(@path_to_project, "WEB-INF")
161
174
  mkdir_p web_inf_dir
175
+ FileUtils.mkdir_p(File.join(@path_to_project, "log"))
176
+ @listener = if @settings.rails?
177
+ "org.jruby.rack.rails.RailsServletContextListener"
178
+ else
179
+ "org.jruby.rack.RackServletContextListener"
180
+ end
162
181
  overlay_files File.join(@jetpack_dir, "web_inf_files"), web_inf_dir
182
+
183
+ if @settings.jetty_filters?
184
+ web_inf_lib_dir = File.join(web_inf_dir, "lib")
185
+ mkdir_p web_inf_lib_dir
186
+
187
+ install_commons_validator web_inf_lib_dir
188
+
189
+ web_inf_classes_dir = File.join(web_inf_dir, "classes")
190
+ mkdir_p web_inf_classes_dir
191
+
192
+ puts "Compiling Jetty filters"
193
+ x! "javac -classpath #{vendor_dir}/jetty/lib/servlet-api-3.0.jar -d #{web_inf_classes_dir} #{@jetpack_dir}/src/java/jetpack/filter/IgnoreUnknownHttpMethodsFilter.java"
194
+ x! "javac -classpath #{vendor_dir}/jetty/lib/servlet-api-3.0.jar:#{web_inf_lib_dir}/commons-validator-1.4.0.jar -d #{web_inf_classes_dir} #{@jetpack_dir}/src/java/jetpack/filter/ValidUrlFilter.java"
195
+ end
163
196
  end
164
197
 
165
198
  config_jetpack_dir_in_project = File.join(@path_to_project, "config/jetpack_files")
@@ -0,0 +1,16 @@
1
+ #!/bin/bash
2
+
3
+ # trace back to the original location of the launch file,
4
+ # or else /../vendor/jetty will be relative to a symlink
5
+ # see: http://stackoverflow.com/a/246128
6
+ source="${BASH_SOURCE[0]}"
7
+ while [ -h "$source" ] ; do source="$(readlink "$source")"; done
8
+ this_dir="$( cd -P "$( dirname "$source" )" && pwd )"
9
+
10
+ cd $this_dir/../vendor/jetty
11
+
12
+ exec java -jar <%= @settings.java_options %> \
13
+ -Djetty.logs=$this_dir/../log \
14
+ -Djetty.home=$this_dir/../vendor/jetty \
15
+ -Djava.io.tmpdir=/tmp \
16
+ start.jar
Binary file
@@ -2,10 +2,10 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "jetpack"
5
- s.version = "0.1.0"
5
+ s.version = "0.1.3"
6
6
  s.platform = Gem::Platform::RUBY
7
- s.authors = ["Steve Conover"]
8
- s.email = ["steve@squareup.com"]
7
+ s.authors = ["Steve Conover", "Xavier Shay", "Taylor Phillips", "Chris Heisterkamp"]
8
+ s.email = ["steve@squareup.com", "xavier@squareup.com", "taylor@squareup.com", "cheister@squareup.com"]
9
9
  s.homepage = "https://github.com/square/jetpack"
10
10
  s.summary = %q{Jetpack prepares your jRuby project for jvm deployment.}
11
11
 
@@ -0,0 +1,31 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ -----END CERTIFICATE-----
@@ -0,0 +1,51 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ 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
51
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,89 @@
1
+ Bag Attributes
2
+ localKeyID: 03 AB 04 EF 7F 65 5F 38 EC F7 FF 04 B3 E6 C1 AD 00 AC 45 4E
3
+ subject=/C=US/ST=California/L=San Francisco/O=Square, Inc. (fake)/CN=*.squareup.com
4
+ issuer=/C=US/ST=California/L=San Francisco/O=Square, Inc. (fake)/CN=*.squareup.com
5
+ -----BEGIN CERTIFICATE-----
6
+ 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
35
+ -----END CERTIFICATE-----
36
+ Bag Attributes
37
+ localKeyID: 03 AB 04 EF 7F 65 5F 38 EC F7 FF 04 B3 E6 C1 AD 00 AC 45 4E
38
+ Key Attributes: <No Attributes>
39
+ -----BEGIN RSA PRIVATE KEY-----
40
+ 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
89
+ -----END RSA PRIVATE KEY-----
@@ -26,18 +26,31 @@
26
26
  </New>
27
27
  </Set>
28
28
 
29
+ <% unless @settings.https_port.to_s.empty? %>
29
30
  <Call name="addConnector">
30
31
  <Arg>
31
32
  <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
32
33
  <Set name="port"><%=@settings.https_port%></Set>
33
34
  <Set name="maxIdleTime">30000</Set>
34
- <Set name="password"><SystemProperty name="jetty.ssl.password" default="foobar" /></Set>
35
- <Set name="keystore"><SystemProperty name="jetty.ssl.keystore" default="etc/fake.p12" /></Set>
36
- <Set name="keystoreType">PKCS12</Set>
35
+ <Set name="password"><%= @settings.keystore_password %></Set>
36
+ <Set name="keystore"><%= @settings.keystore %></Set>
37
+ <!-- Using RC4 to avoid the Rizzo/Duong attack on block ciphers. -->
38
+ <Set name="IncludeCipherSuites">
39
+ <Array type="java.lang.String">
40
+ <Item>TLS_ECDHE_ECDSA_WITH_RC4_128_SHA</Item>
41
+ <Item>TLS_ECDHE_RSA_WITH_RC4_128_SHA</Item>
42
+ <Item>TLS_ECDH_ECDSA_WITH_RC4_128_SHA</Item>
43
+ <Item>TLS_ECDH_RSA_WITH_RC4_128_SHA</Item>
44
+ <Item>SSL_RSA_WITH_RC4_128_SHA</Item>
45
+ </Array>
46
+ </Set>
47
+ <Set name="keystoreType"><%= @settings.keystore_type %></Set>
37
48
  </New>
38
49
  </Arg>
39
50
  </Call>
51
+ <% end %>
40
52
 
53
+ <% unless @settings.http_port.to_s.empty? %>
41
54
  <Call name="addConnector">
42
55
  <Arg>
43
56
  <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
@@ -46,17 +59,20 @@
46
59
  </New>
47
60
  </Arg>
48
61
  </Call>
62
+ <% end %>
49
63
 
50
- <!-- set the rails.env java system property based on the RAILS_ENV environment variable -->
51
- <!-- this is used by jruby-rack to set Rails.env -->
52
- <Call class="java.lang.System" name="setProperty">
53
- <Arg>rails.env</Arg>
54
- <Arg>
55
- <Call class="java.lang.System" name="getenv">
56
- <Arg>RAILS_ENV</Arg>
57
- </Call>
58
- </Arg>
59
- </Call>
64
+ <% if @settings.rails? %>
65
+ <!-- set the rails.env java system property based on the RAILS_ENV environment variable -->
66
+ <!-- this is used by jruby-rack to set Rails.env -->
67
+ <Call class="java.lang.System" name="setProperty">
68
+ <Arg>rails.env</Arg>
69
+ <Arg>
70
+ <Call class="java.lang.System" name="getenv">
71
+ <Arg>RAILS_ENV</Arg>
72
+ </Call>
73
+ </Arg>
74
+ </Call>
75
+ <% end %>
60
76
 
61
77
  <Set name="handler">
62
78
  <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
@@ -65,17 +81,14 @@
65
81
  <Item>
66
82
  <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
67
83
  </Item>
68
- <Item>
69
- <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
70
- </Item>
71
84
  <Item>
72
85
 
73
86
  <!-- Set up the webapp context for the rails root, which is ../../ from here -->
74
87
  <New class="org.eclipse.jetty.webapp.WebAppContext">
75
88
  <Arg><Ref id="Contexts"/></Arg>
76
- <Arg>../../</Arg> <!-- "resource base" -->
89
+ <Arg><Property name="jetty.home"/>/../../</Arg> <!-- "resource base" -->
77
90
  <Arg>/</Arg> <!-- webapp root -->
78
- <Set name="extraClasspath">../jruby.jar;../jruby-rack.jar</Set>
91
+ <Set name="extraClasspath"><Property name="jetty.home"/>/../jruby.jar;<Property name="jetty.home"/>/../jruby-rack.jar</Set>
79
92
  <!-- cp that makes ruby+rack work -->
80
93
  </New>
81
94
  </Item>
@@ -91,22 +104,37 @@
91
104
  <Set name="dumpAfterStart">false</Set>
92
105
  <Set name="dumpBeforeStop">false</Set>
93
106
 
107
+ <New id="ServerLog" class="java.io.PrintStream">
108
+ <Arg>
109
+ <New class="org.eclipse.jetty.util.RolloverFileOutputStream">
110
+ <Arg><Property name="jetty.home"/>/../../log/jetty_stderr_yyyy_mm_dd.log</Arg>
111
+ <Arg type="boolean">false</Arg>
112
+ <Arg type="int">30</Arg>
113
+ <Arg><Call class="java.util.TimeZone" name="getTimeZone"><Arg>GMT</Arg></Call></Arg>
114
+ <Get id="ServerLogName" name="datedFilename"/>
115
+ </New>
116
+ </Arg>
117
+ </New>
118
+
94
119
  <Ref id="Handlers">
95
120
  <Call name="addHandler">
96
121
  <Arg>
97
122
  <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
98
- <Set name="requestLog">
123
+ <Set name="requestLog">
99
124
  <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
100
- <Set name="filename">../../log/jetty_request_yyyy_mm_dd.log</Set>
125
+ <Set name="filename"><Property name="jetty.home"/>/../../log/jetty_request_yyyy_mm_dd.log</Set>
101
126
  <Set name="filenameDateFormat">yyyy_MM_dd</Set>
102
- <Set name="retainDays">90</Set>
127
+ <Set name="retainDays">30</Set>
103
128
  <Set name="append">true</Set>
104
- <Set name="extended">false</Set>
129
+ <Set name="extended">true</Set>
130
+ <Set name="logLatency">true</Set>
131
+ <Set name="logDispatch">true</Set>
132
+ <Set name="preferProxiedForAddress">true</Set>
105
133
  <Set name="logCookies">false</Set>
106
134
  <Set name="LogTimeZone">GMT</Set>
107
- </New>
108
- </Set>
109
- </New>
135
+ </New>
136
+ </Set>
137
+ </New>
110
138
  </Arg>
111
139
  </Call>
112
140
  </Ref>