Skip to content

Commit d914dc8

Browse files
cg2vdevanshk
authored andcommitted
Dont override logger (#711)
* Update auxiliary loggers to not break main log Update COURSE_LOGGER (and add ASSESSMENT_LOGGER) so that the custom course and assessment formats are not applies to the main rails log. Overriding Logger::format_message prevents certain rails features (like log tags) from working. * set formatter instead of overriding format_message Since these classes don't inherit from Logger, they can't override format_message. Use a formatter instead.
1 parent 0219510 commit d914dc8

File tree

4 files changed

+41
-15
lines changed

4 files changed

+41
-15
lines changed

app/controllers/application_controller.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ def set_course
153153
flash[:error] = e.to_s
154154
redirect_to(controller: :home, action: :error) && return
155155
end
156+
ASSESSMENT_LOGGER.setCourse(@course)
156157
end
157158

158159
def authorize_user_for_course
@@ -226,6 +227,7 @@ def set_assessment
226227
redirect_to(action: :index) && return if @cud.student? && !@assessment.released?
227228

228229
@breadcrumbs << (view_context.current_assessment_link)
230+
ASSESSMENT_LOGGER.setAssessment(@assessment)
229231
end
230232

231233
# Loads the submission from the DB

app/controllers/assessment/autograde.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module AssessmentAutograde
1313
def autograde_done
1414
@assessment = @course.assessments.find_by(name: params[:name])
1515
render(nothing: true) && return unless @assessment && @assessment.has_autograder?
16+
ASSESSMENT_LOGGER.setAssessment(@assessment)
1617

1718
# there can be multiple submission with the same dave if this was a group submission
1819
submissions = Submission.where(dave: params[:dave]).all
@@ -524,9 +525,8 @@ def saveAutograde(submissions, feedback)
524525
end
525526
end
526527

527-
logger = Logger.new(Rails.root.join("courses", @course.name, @assessment.name, "log.txt"))
528528
submissions.each do |submission|
529-
logger.add(Logger::INFO) { "#{submission.course_user_datum.email}, #{submission.version}, #{autoresult}" }
529+
ASSESSMENT_LOGGER.log("#{submission.course_user_datum.email}, #{submission.version}, #{autoresult}")
530530
end
531531
end
532532

app/controllers/assessment/handin.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ def log_submit
191191
render(plain: "ERROR: No result!", status: :bad_request) && return unless @result
192192

193193
# Everything looks OK, so append the autoresult to the log.txt file for this lab
194-
@logger = Logger.new(Rails.root.join("courses", @course.name, @assessment.name, "log.txt"))
195-
@logger.add(Logger::INFO) { "#{@user.email},0,#{@result}" }
194+
ASSESSMENT_LOGGER.setAssessment(@assessment)
195+
ASSESSMENT_LOGGER.log("#{@user.email},0,#{@result}")
196196

197197
# Load up the lab.rb file
198198
mod_name = @assessment.name + (@course.name).gsub(/[^A-Za-z0-9]/, "")

app/models/course_logger.rb

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,52 @@
1-
class Logger
2-
def format_message(level, time, _progname, msg)
1+
class AutolabFormatter < ::Logger::Formatter
2+
def call(level, time, _progname, msg)
33
strTime = time.strftime("%m/%d/%y %H:%M:%S")
44
"#{level} -- #{strTime} -- #{msg}\n"
55
end
66
end
77

8-
class CourseLogger
8+
class CustomLogger
99
def initalize
10-
@logger = nil
10+
resetPath
1111
end
1212

13-
def setCourse(course)
13+
def setLogPath(path)
1414
# if this can't grab the file, Autolab should still function
15-
@logger = Logger.new("#{Rails.root}/courses/#{course.name}/autolab.log", "monthly")
15+
@logger = Logger.new(path, "monthly")
16+
@logger.formatter = AutolabFormatter.new
1617
rescue
17-
@logger = nil
18+
@logger = Rails.logger
19+
end
20+
21+
def resetPath
22+
@logger = Rails.logger
1823
end
1924

2025
def log(message, severity = Logger::INFO)
21-
if @logger
2226
@logger.add(severity) { message }
23-
else
24-
ActionController::Base.logger.add(severity) { message }
25-
end
2627
end
2728
end
29+
class CourseLogger < CustomLogger
30+
def setCourse(course)
31+
setLogPath(Rails.root.join("courses", course.name, "autolab.log"))
32+
end
33+
end
34+
35+
class AssessmentLogger < CustomLogger
36+
def initalize
37+
@course = nil
38+
@assessment = nil
39+
end
40+
def setCourse(course)
41+
@course = course
42+
@assessment = nil
43+
resetPath
44+
end
45+
def setAssessment(assessment)
46+
@assessment = assessment
47+
setLogPath(Rails.root.join("courses", @course.name, @assessment.name, "log.txt"))
48+
end
49+
end
50+
2851
COURSE_LOGGER = CourseLogger.new
52+
ASSESSMENT_LOGGER = AssessmentLogger.new

0 commit comments

Comments
 (0)