diff --git a/.devcontainer/images/nginx/conf/nginx_external_endpoints.conf b/.devcontainer/images/nginx/conf/nginx_external_endpoints.conf index ee7b058df3b..4744b1e52c5 100644 --- a/.devcontainer/images/nginx/conf/nginx_external_endpoints.conf +++ b/.devcontainer/images/nginx/conf/nginx_external_endpoints.conf @@ -9,7 +9,6 @@ server { # proxy and log all CC traffic location / { access_log /tmp/nginx-access.log main; - access_log syslog:server=127.0.0.1,severity=info,tag=vcap_nginx_access main; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; diff --git a/Gemfile b/Gemfile index d71fa2819a6..4d69e5a8caa 100644 --- a/Gemfile +++ b/Gemfile @@ -31,7 +31,6 @@ gem 'sequel_pg', require: 'sequel' gem 'sinatra', '~> 4.2' gem 'sinatra-contrib' gem 'statsd-ruby', '~> 1.5.0' -gem 'syslog' gem 'talentbox-delayed_job_sequel', '~> 4.4.0' gem 'uri', '~> 1.1' gem 'vmstat', '~> 2.3' diff --git a/Gemfile.lock b/Gemfile.lock index 8ce94f07909..41c63336557 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -566,8 +566,6 @@ GEM spring (>= 0.9.1) statsd-ruby (1.5.0) stringio (3.2.0) - syslog (0.4.0) - logger talentbox-delayed_job_sequel (4.4.0) delayed_job (~> 4.1) sequel (>= 5.0, < 6.0) @@ -681,7 +679,6 @@ DEPENDENCIES spring spring-commands-rspec statsd-ruby (~> 1.5.0) - syslog talentbox-delayed_job_sequel (~> 4.4.0) timecop uri (~> 1.1) diff --git a/config/cloud_controller.yml b/config/cloud_controller.yml index 1395d928f3d..5723550b9d4 100644 --- a/config/cloud_controller.yml +++ b/config/cloud_controller.yml @@ -111,7 +111,6 @@ nginx: logging: file: /tmp/cloud_controller.log level: debug2 - syslog: vcap.example anonymize_ips: false format: timestamp: 'rfc3339' diff --git a/lib/cloud_controller/config_schemas/api_schema.rb b/lib/cloud_controller/config_schemas/api_schema.rb index e6ab9e260b6..be12cd7e140 100644 --- a/lib/cloud_controller/config_schemas/api_schema.rb +++ b/lib/cloud_controller/config_schemas/api_schema.rb @@ -75,7 +75,6 @@ class ApiSchema < VCAP::Config logging: { level: String, # debug, info, etc. file: String, # Log file to use - syslog: String, # Name to associate with syslog messages (should start with 'vcap.') optional(:stdout_sink_enabled) => bool, optional(:anonymize_ips) => bool, optional(:format) => { diff --git a/lib/cloud_controller/config_schemas/blobstore_benchmarks_schema.rb b/lib/cloud_controller/config_schemas/blobstore_benchmarks_schema.rb index 82e28c0a71b..e37d8eb6f8d 100644 --- a/lib/cloud_controller/config_schemas/blobstore_benchmarks_schema.rb +++ b/lib/cloud_controller/config_schemas/blobstore_benchmarks_schema.rb @@ -34,7 +34,6 @@ class BlobstoreBenchmarksSchema < VCAP::Config optional(:logging) => { optional(:level) => String, optional(:file) => String, - optional(:syslog) => String, optional(:stdout_sink_enabled) => bool }, diff --git a/lib/cloud_controller/config_schemas/clock_schema.rb b/lib/cloud_controller/config_schemas/clock_schema.rb index 17a681c4823..a6d84326290 100644 --- a/lib/cloud_controller/config_schemas/clock_schema.rb +++ b/lib/cloud_controller/config_schemas/clock_schema.rb @@ -44,8 +44,7 @@ class ClockSchema < VCAP::Config logging: { level: String, # debug, info, etc. - file: String, # Log file to use - syslog: String # Name to associate with syslog messages (should start with 'vcap.') + file: String # Log file to use }, pid_filename: String, # Pid filename to use diff --git a/lib/cloud_controller/config_schemas/deployment_updater_schema.rb b/lib/cloud_controller/config_schemas/deployment_updater_schema.rb index b31d76449b6..e6430b97322 100644 --- a/lib/cloud_controller/config_schemas/deployment_updater_schema.rb +++ b/lib/cloud_controller/config_schemas/deployment_updater_schema.rb @@ -9,8 +9,7 @@ class DeploymentUpdaterSchema < VCAP::Config logging: { level: String, # debug, info, etc. - file: String, # Log file to use - syslog: String # Name to associate with syslog messages (should start with 'vcap.') + file: String # Log file to use }, pid_filename: String, # Pid filename to use diff --git a/lib/cloud_controller/config_schemas/migrate_schema.rb b/lib/cloud_controller/config_schemas/migrate_schema.rb index d544617ebcd..971ff0999aa 100644 --- a/lib/cloud_controller/config_schemas/migrate_schema.rb +++ b/lib/cloud_controller/config_schemas/migrate_schema.rb @@ -34,7 +34,6 @@ class MigrateSchema < VCAP::Config logging: { level: String, # debug, info, etc. file: String, # Log file to use - syslog: String, # Name to associate with syslog messages (should start with 'vcap.') optional(:stdout_sink_enabled) => bool } } diff --git a/lib/cloud_controller/config_schemas/rotate_database_key_schema.rb b/lib/cloud_controller/config_schemas/rotate_database_key_schema.rb index 704aebae816..157aca1c7ff 100644 --- a/lib/cloud_controller/config_schemas/rotate_database_key_schema.rb +++ b/lib/cloud_controller/config_schemas/rotate_database_key_schema.rb @@ -8,7 +8,6 @@ class RotateDatabaseKeySchema < VCAP::Config logging: { level: String, # debug, info, etc. file: String, # Log file to use - syslog: String, # Name to associate with syslog messages (should start with 'vcap.') stdout_sink_enabled: bool }, diff --git a/lib/cloud_controller/config_schemas/route_syncer_schema.rb b/lib/cloud_controller/config_schemas/route_syncer_schema.rb index d6ec734b914..83afff01003 100644 --- a/lib/cloud_controller/config_schemas/route_syncer_schema.rb +++ b/lib/cloud_controller/config_schemas/route_syncer_schema.rb @@ -7,8 +7,7 @@ class RouteSyncerSchema < VCAP::Config { logging: { level: String, # debug, info, etc. - file: String, # Log file to use - syslog: String # Name to associate with syslog messages (should start with 'vcap.') + file: String # Log file to use }, pid_filename: String, # Pid filename to use diff --git a/lib/cloud_controller/config_schemas/worker_schema.rb b/lib/cloud_controller/config_schemas/worker_schema.rb index 92f1ebad887..55a7c1e155d 100644 --- a/lib/cloud_controller/config_schemas/worker_schema.rb +++ b/lib/cloud_controller/config_schemas/worker_schema.rb @@ -30,8 +30,7 @@ class WorkerSchema < VCAP::Config logging: { level: String, # debug, info, etc. - file: String, # Log file to use - syslog: String # Name to associate with syslog messages (should start with 'vcap.') + file: String # Log file to use }, log_audit_events: bool, diff --git a/lib/cloud_controller/rack_app_builder.rb b/lib/cloud_controller/rack_app_builder.rb index e4bad4c6581..a725ad0fa9b 100644 --- a/lib/cloud_controller/rack_app_builder.rb +++ b/lib/cloud_controller/rack_app_builder.rb @@ -1,4 +1,3 @@ -require 'syslog/logger' require 'vcap_request_context_setter' require 'cors' require 'request_metrics' diff --git a/lib/steno/config.rb b/lib/steno/config.rb index 5c506496241..e71528e32ba 100644 --- a/lib/steno/config.rb +++ b/lib/steno/config.rb @@ -15,7 +15,6 @@ class << self # logging: # level: # file: - # syslog: # # @param [String] path Path to yaml config # @param [Hash] overrides @@ -48,11 +47,6 @@ def to_config_hash(hash) opts[:sinks] << Steno::Sink::IO.for_file(hash[:file], max_retries:) end - if hash[:syslog] - Steno::Sink::Syslog.instance.open(hash[:syslog]) - opts[:sinks] << Steno::Sink::Syslog.instance - end - opts[:sinks] << Steno::Sink::IO.new($stdout) if opts[:sinks].empty? opts diff --git a/lib/steno/sink.rb b/lib/steno/sink.rb index 2598507a567..4b1cd010c46 100644 --- a/lib/steno/sink.rb +++ b/lib/steno/sink.rb @@ -1,4 +1,3 @@ require 'steno/sink/base' require 'steno/sink/io' -require 'steno/sink/syslog' require 'steno/sink/counter' diff --git a/lib/steno/sink/syslog.rb b/lib/steno/sink/syslog.rb deleted file mode 100644 index b391723f590..00000000000 --- a/lib/steno/sink/syslog.rb +++ /dev/null @@ -1,72 +0,0 @@ -require 'steno/sink/base' - -require 'singleton' -require 'syslog' - -class Steno::Sink::Syslog < Steno::Sink::Base - include Singleton - - MAX_MESSAGE_SIZE = 1024 * 3 - TRUNCATE_POSTFIX = '...'.freeze - - LOG_LEVEL_MAP = { - fatal: Syslog::LOG_CRIT, - error: Syslog::LOG_ERR, - warn: Syslog::LOG_WARNING, - info: Syslog::LOG_INFO, - debug: Syslog::LOG_DEBUG, - debug1: Syslog::LOG_DEBUG, - debug2: Syslog::LOG_DEBUG - }.freeze - - def initialize - super - - @syslog = nil - @syslog_lock = Mutex.new - end - - # Resets the singleton's internal state. This is primarily used for test cleanup - # to prevent mock leakage between tests when RSpec doubles are stored in @syslog or @codec. - def reset! - @syslog_lock.synchronize do - @syslog = nil - @codec = nil - end - end - - def open(identity) - @identity = identity - # Close syslog if it's already open before reopening with new identity - Syslog.close if Syslog.opened? - @syslog = Syslog.open(@identity, Syslog::LOG_PID | Syslog::LOG_CONS) - end - - def add_record(record) - return if record.log_level == :off - return unless @syslog - return unless @codec - - record = truncate_record(record) - msg = @codec.encode_record(record) - pri = LOG_LEVEL_MAP[record.log_level] - @syslog_lock.synchronize { @syslog.log(pri, '%s', msg) } - end - - def flush - nil - end - - private - - def truncate_record(record) - return record if record.message.size <= MAX_MESSAGE_SIZE - - truncated = record.message.slice(0...(MAX_MESSAGE_SIZE - TRUNCATE_POSTFIX.size)) - truncated << TRUNCATE_POSTFIX - Steno::Record.new(record.source, record.log_level, - truncated, - [record.file, record.lineno, record.method], - record.data) - end -end diff --git a/spec/isolated_specs/steno/spec_helper.rb b/spec/isolated_specs/steno/spec_helper.rb deleted file mode 100644 index 1fe5eb61200..00000000000 --- a/spec/isolated_specs/steno/spec_helper.rb +++ /dev/null @@ -1,16 +0,0 @@ -# Steno-specific spec helper -# This file loads steno's support files for its unit tests -# The main spec_helper is loaded by each test file with require 'spec_helper' - -Dir[File.expand_path('support/**/*.rb', __dir__)].each { |file| require file } - -# Ensure steno state is cleaned up after each test to avoid interfering with other tests -RSpec.configure do |config| - config.after do - # Reset the Syslog singleton to clear any mocks stored in @syslog and @codec - Steno::Sink::Syslog.instance.reset! if defined?(Steno::Sink::Syslog) - - # Close the actual syslog connection if open - Syslog.close if defined?(Syslog) && Syslog.opened? - end -end diff --git a/spec/isolated_specs/steno/unit/config_spec.rb b/spec/isolated_specs/steno/unit/config_spec.rb index 98c91da1752..0e57d60d5ad 100644 --- a/spec/isolated_specs/steno/unit/config_spec.rb +++ b/spec/isolated_specs/steno/unit/config_spec.rb @@ -13,12 +13,6 @@ expect(Steno::Sink::IO).to receive(:for_file).with(@log_path, max_retries: 5). and_return(@mock_sink_file) - - @mock_sink_syslog = double('sink') - expect(@mock_sink_syslog).to receive(:codec=) - expect(@mock_sink_syslog).to receive(:open).with('test') - expect(Steno::Sink::Syslog).to receive(:instance).twice. - and_return(@mock_sink_syslog) end after do @@ -28,8 +22,8 @@ expect(@config.context.class).to eq(Steno::Context::Null) expect(@config.codec.class).to eq(Steno::Codec::Json) - expect(@config.sinks.size).to eq(2) - expect(@config.sinks).to contain_exactly(@mock_sink_file, @mock_sink_syslog) + expect(@config.sinks.size).to eq(1) + expect(@config.sinks).to contain_exactly(@mock_sink_file) end it 'works for symbolized keys' do @@ -37,7 +31,6 @@ file: @log_path, level: 'debug2', default_log_level: 'warn', - syslog: 'test', max_retries: 5 } end @@ -47,7 +40,6 @@ 'file' => @log_path, 'level' => 'debug2', 'default_log_level' => 'warn', - 'syslog' => 'test', 'max_retries' => 5 } end @@ -113,19 +105,6 @@ expect(config.sinks[0]).to eq(mock_sink) end - it "adds a syslog sink if the 'syslog' key is specified" do - write_config(@config_path, { 'syslog' => 'test' }) - mock_sink = double('sink') - expect(mock_sink).to receive(:open).with('test') - expect(mock_sink).to receive(:codec=) - - expect(Steno::Sink::Syslog).to receive(:instance).twice.and_return(mock_sink) - - config = described_class.from_file(@config_path) - expect(config.sinks.size).to eq(1) - expect(config.sinks[0]).to eq(mock_sink) - end - it 'adds an io sink to stdout if no sinks are explicitly specified in the config file' do write_config(@config_path, {}) mock_sink = double('sink') diff --git a/spec/isolated_specs/steno/unit/sink/syslog_spec.rb b/spec/isolated_specs/steno/unit/sink/syslog_spec.rb deleted file mode 100644 index b9d6bb713c4..00000000000 --- a/spec/isolated_specs/steno/unit/sink/syslog_spec.rb +++ /dev/null @@ -1,94 +0,0 @@ -require 'steno/steno' - -RSpec.describe Steno::Sink::Syslog do - let(:level) do - Steno::Logger.lookup_level(:info) - end - - let(:record) do - Steno::Record.new('source', level.name, 'message') - end - - let(:record_with_big_message) do - Steno::Record.new('source', level.name, - 'a' * (Steno::Sink::Syslog::MAX_MESSAGE_SIZE + 1)) - end - - describe '#add_record' do - it 'appends an encoded record with the correct priority' do - identity = 'test' - - syslog = double('syslog', facility: nil) - expect(Syslog).to receive(:open).and_return(syslog) - - sink = described_class.instance - sink.open(identity) - - codec = double('codec') - expect(codec).to receive(:encode_record).with(record).and_return(record.message) - sink.codec = codec - - expect(syslog).to receive(:log).with(Syslog::LOG_INFO, '%s', record.message) - - sink.add_record(record) - end - - it 'truncates the record message if its greater than than allowed size' do - identity = 'test' - - syslog = double('syslog', facility: nil) - expect(Syslog).to receive(:open).and_return(syslog) - - sink = described_class.instance - sink.open(identity) - - truncated = record_with_big_message.message. - slice(0..(Steno::Sink::Syslog::MAX_MESSAGE_SIZE - 4)) - truncated << Steno::Sink::Syslog::TRUNCATE_POSTFIX - codec = double('codec') - expect(codec).to receive(:encode_record) do |*args| - expect(args.size).to eq(1) - expect(args[0].message).to eq(truncated) - expect(args[0].message.size).to be <= Steno::Sink::Syslog::MAX_MESSAGE_SIZE - - next args[0].message - end - - sink.codec = codec - - expect(syslog).to receive(:log).with(Syslog::LOG_INFO, '%s', truncated) - - sink.add_record(record_with_big_message) - end - - context 'when level is off' do - let(:level) do - Steno::Logger.lookup_level(:off) - end - - it 'does not write out logs' do - identity = 'test' - - syslog = double('syslog', facility: nil, log: nil) - expect(Syslog).to receive(:open).and_return(syslog) - - sink = described_class.instance - sink.open(identity) - - codec = double('codec', encode_record: nil) - sink.codec = codec - - sink.add_record(record) - - expect(codec).not_to have_received(:encode_record) - expect(syslog).not_to have_received(:log) - end - end - end - - describe '#flush' do - it 'does nothing' do - described_class.instance.flush - end - end -end diff --git a/spec/tasks/db_spec.rb b/spec/tasks/db_spec.rb index 1cf2fc7b8b9..db6e0b11a44 100644 --- a/spec/tasks/db_spec.rb +++ b/spec/tasks/db_spec.rb @@ -11,7 +11,6 @@ logging: { stdout_sink_enabled: stdout_sink_enabled, level: 'debug2', - syslog: 'vcap.example', file: '/tmp/cloud_controller.log', anonymize_ips: false, format: { timestamp: 'rfc3339' } @@ -34,7 +33,6 @@ Rake::Task['db:migrate'].execute # From test config: - expect(Steno.config.sinks).to include(an_instance_of(Steno::Sink::Syslog)) expect(Steno.config.sinks).to include(an_instance_of(Steno::Sink::IO).and(satisfy { |sink| sink.instance_variable_get(:@io_obj).is_a?(File) })) # From db.rake: