Move project services log to a separate file
This commit is contained in:
parent
6967fd0aa5
commit
9710cda30e
13 changed files with 92 additions and 13 deletions
|
@ -12,7 +12,8 @@ class Admin::LogsController < Admin::ApplicationController
|
|||
Gitlab::GitLogger,
|
||||
Gitlab::EnvironmentLogger,
|
||||
Gitlab::SidekiqLogger,
|
||||
Gitlab::RepositoryCheckLogger
|
||||
Gitlab::RepositoryCheckLogger,
|
||||
Gitlab::ProjectServiceLogger
|
||||
]
|
||||
end
|
||||
end
|
||||
|
|
26
app/models/concerns/project_services_loggable.rb
Normal file
26
app/models/concerns/project_services_loggable.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
module ProjectServicesLoggable
|
||||
def log_info(message, params = {})
|
||||
message = build_message(message, params)
|
||||
|
||||
logger.info(message)
|
||||
end
|
||||
|
||||
def log_error(message, params = {})
|
||||
message = build_message(message, params)
|
||||
|
||||
logger.error(message)
|
||||
end
|
||||
|
||||
def build_message(message, params = {})
|
||||
{
|
||||
service_class: self.class.name,
|
||||
project_id: project.id,
|
||||
project_path: project.full_path,
|
||||
message: message
|
||||
}.merge(params)
|
||||
end
|
||||
|
||||
def logger
|
||||
Gitlab::ProjectServiceLogger
|
||||
end
|
||||
end
|
|
@ -101,7 +101,7 @@ http://app.asana.com/-/account_api'
|
|||
task.update(completed: true)
|
||||
end
|
||||
rescue => e
|
||||
Rails.logger.error(e.message)
|
||||
log_error(e.message)
|
||||
next
|
||||
end
|
||||
end
|
||||
|
|
|
@ -104,7 +104,7 @@ class IrkerService < Service
|
|||
new_recipient = URI.join(default_irc_uri, '/', recipient).to_s
|
||||
uri = consider_uri(URI.parse(new_recipient))
|
||||
rescue
|
||||
Rails.logger.error("Unable to create a valid URL from #{default_irc_uri} and #{recipient}")
|
||||
log_error("Unable to create a valid URL", default_irc_uri: default_irc_uri, recipient: recipient)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ class IssueTrackerService < Service
|
|||
rescue Gitlab::HTTP::Error, Timeout::Error, SocketError, Errno::ECONNRESET, Errno::ECONNREFUSED, OpenSSL::SSL::SSLError => error
|
||||
message = "#{self.type} had an error when trying to connect to #{self.project_url}: #{error.message}"
|
||||
end
|
||||
Rails.logger.info(message)
|
||||
log_info(message)
|
||||
result
|
||||
end
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ class JiraService < IssueTrackerService
|
|||
begin
|
||||
issue.transitions.build.save!(transition: { id: transition_id })
|
||||
rescue => error
|
||||
Rails.logger.info "#{self.class.name} Issue Transition failed message ERROR: #{client_url} - #{error.message}"
|
||||
log_error("Issue transition failed", error: error.message, client_url: client_url)
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
@ -257,9 +257,8 @@ class JiraService < IssueTrackerService
|
|||
new_remote_link.save!(remote_link_props)
|
||||
end
|
||||
|
||||
result_message = "#{self.class.name} SUCCESS: Successfully posted to #{client_url}."
|
||||
Rails.logger.info(result_message)
|
||||
result_message
|
||||
log_info("Successfully posted", client_url: client_url)
|
||||
"SUCCESS: Successfully posted to http://jira.example.net."
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -317,7 +316,7 @@ class JiraService < IssueTrackerService
|
|||
|
||||
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, URI::InvalidURIError, JIRA::HTTPError, OpenSSL::SSL::SSLError => e
|
||||
@error = e.message
|
||||
Rails.logger.info "#{self.class.name} Send message ERROR: #{client_url} - #{@error}"
|
||||
log_error("Error sending message", client_url: client_url, error: @error)
|
||||
nil
|
||||
end
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
class Service < ActiveRecord::Base
|
||||
include Sortable
|
||||
include Importable
|
||||
include ProjectServicesLoggable
|
||||
|
||||
serialize :properties, JSON # rubocop:disable Cop/ActiveRecordSerialize
|
||||
|
||||
|
|
5
changelogs/unreleased/issue_50488.yml
Normal file
5
changelogs/unreleased/issue_50488.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Move project services log to a separate file
|
||||
merge_request:
|
||||
author:
|
||||
type: other
|
|
@ -113,6 +113,19 @@ October 07, 2014 11:25: User "Claudie Hodkiewicz" (nasir_stehr@olson.co.uk) was
|
|||
October 07, 2014 11:25: Project "project133" was removed
|
||||
```
|
||||
|
||||
## `integrations_json.log`
|
||||
|
||||
This file lives in `/var/log/gitlab/gitlab-rails/integrations_json.log` for
|
||||
Omnibus GitLab packages or in `/home/git/gitlab/log/integrations_json.log` for
|
||||
installations from source.
|
||||
|
||||
It contains information about [integrations](../user/project/integrations/project_services.md) activities such as JIRA, Asana and Irker services. It uses JSON format like the example below:
|
||||
|
||||
``` json
|
||||
{"severity":"ERROR","time":"2018-09-06T14:56:20.439Z","service_class":"JiraService","project_id":8,"project_path":"h5bp/html5-boilerplate","message":"Error sending message","client_url":"http://jira.gitlap.com:8080","error":"execution expired"}
|
||||
{"severity":"INFO","time":"2018-09-06T17:15:16.365Z","service_class":"JiraService","project_id":3,"project_path":"namespace2/project2","message":"Successfully posted","client_url":"http://jira.example.net"}
|
||||
```
|
||||
|
||||
## `githost.log`
|
||||
|
||||
This file lives in `/var/log/gitlab/gitlab-rails/githost.log` for
|
||||
|
|
7
lib/gitlab/project_service_logger.rb
Normal file
7
lib/gitlab/project_service_logger.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
module Gitlab
|
||||
class ProjectServiceLogger < Gitlab::JsonLogger
|
||||
def self.file_name_noext
|
||||
'integrations_json'
|
||||
end
|
||||
end
|
||||
end
|
|
@ -231,12 +231,12 @@ describe JiraService do
|
|||
end
|
||||
|
||||
it 'logs exception when transition id is not valid' do
|
||||
allow(Rails.logger).to receive(:info)
|
||||
WebMock.stub_request(:post, @transitions_url).with(basic_auth: %w(gitlab_jira_username gitlab_jira_password)).and_raise('Bad Request')
|
||||
allow(@jira_service).to receive(:log_error)
|
||||
WebMock.stub_request(:post, @transitions_url).with(basic_auth: %w(gitlab_jira_username gitlab_jira_password)).and_raise("Bad Request")
|
||||
|
||||
@jira_service.close_issue(resource, ExternalIssue.new('JIRA-123', project))
|
||||
|
||||
expect(Rails.logger).to have_received(:info).with('JiraService Issue Transition failed message ERROR: http://jira.example.com - Bad Request')
|
||||
expect(@jira_service).to have_received(:log_error).with("Issue transition failed", error: "Bad Request", client_url: "http://jira.example.com")
|
||||
end
|
||||
|
||||
it 'calls the api with jira_issue_transition_id' do
|
||||
|
|
|
@ -345,4 +345,31 @@ describe Service do
|
|||
expect(service.api_field_names).to eq(['safe_field'])
|
||||
end
|
||||
end
|
||||
|
||||
context 'logging' do
|
||||
let(:project) { create(:project) }
|
||||
let(:service) { create(:service, project: project) }
|
||||
let(:test_message) { "test message" }
|
||||
let(:arguments) do
|
||||
{
|
||||
service_class: service.class.name,
|
||||
project_path: project.full_path,
|
||||
project_id: project.id,
|
||||
message: test_message,
|
||||
additional_argument: 'some argument'
|
||||
}
|
||||
end
|
||||
|
||||
it 'logs info messages using json logger' do
|
||||
expect(Gitlab::JsonLogger).to receive(:info).with(arguments)
|
||||
|
||||
service.log_info(test_message, additional_argument: 'some argument')
|
||||
end
|
||||
|
||||
it 'logs error messages using json logger' do
|
||||
expect(Gitlab::JsonLogger).to receive(:error).with(arguments)
|
||||
|
||||
service.log_error(test_message, additional_argument: 'some argument')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -725,7 +725,7 @@ describe SystemNoteService do
|
|||
let(:jira_tracker) { project.jira_service }
|
||||
let(:commit) { project.commit }
|
||||
let(:comment_url) { jira_api_comment_url(jira_issue.id) }
|
||||
let(:success_message) { "JiraService SUCCESS: Successfully posted to http://jira.example.net." }
|
||||
let(:success_message) { "SUCCESS: Successfully posted to http://jira.example.net." }
|
||||
|
||||
before do
|
||||
stub_jira_urls(jira_issue.id)
|
||||
|
|
Loading…
Reference in a new issue