Realizar un módulo que implemente los métodos:
- log –> Recibirá dos argumentos, uno es el nivel en el que se quiere escribir (:info, :debug y :warn) y la cadena de texto a escribir.
- logfile= –> Nos permitirá asignar el fichero en el que se va a escribir, por defecto “ /.practicaruby.log”.
- logfile –> Nos devolverá el fichero en el que se va a escribir, por defecto “ /.practicaruby.log”.
Al ser llamado, log escribirá en el fichero de destino una cadena del tipo:
–> “[fecha-hora || clase] WARN: blablabla”
module Logger
LEVELS = {
:warn => 'WARNING',
:info => 'INFO',
:debug => 'DEBUG'
}
def log(level, error)
File.open(logfile, 'a') {|file| file.write(format_message(error, level))}
end
def logfile=(new_file_path)
@path = new_file_path
end
def logfile
return @path || './practicaruby.log'
end
private
def format_message(error, level)
datetime = Time.now.strftime("%d/%m/%Y %H:%M:%S")
name_of_class = self.class.to_s
level = "#{LEVELS[level] || 'UNDEFINED'}"
return "[" + datetime + " || " + name_of_class + "] " + level + ": " + error + "\n"
end
end
Cuando este el módulo finalizado:
- Se crearán dos clases que incluyan el módulo.
- Cada clase escribirá varios ejemplos de log para cada nivel.
- Cambiar el fichero de log.
class Foo
include Logger
end
class ExampleClass
include Logger
end
foo = Foo.new
foo.log(:warn, 'This is a Warning Message')
foo.log(:info, 'This is a Info Message')
foo.log(:debug, 'This is a Debug Message')
foo.log(:undefined_level, 'This is a Undefined Level Message')
exampleObject = ExampleClass.new
exampleObject.log(:warn, 'This is a Warning Message')
exampleObject.log(:info, 'This is a Info Message')
exampleObject.log(:debug, 'This is a Debug Message')
exampleObject.log(:undefined_level, 'This is a Undefined Level Message')
foo.logfile=("./prueba.log")
foo.log(:warn, 'This is a Warning Message')
RESULTADO:
- Fichero practicaruby.log
[06/08/2018 13:08:36 || Foo] WARNING: This is a Warning Message [06/08/2018 13:08:36 || Foo] INFO: This is a Info Message [06/08/2018 13:08:36 || Foo] DEBUG: This is a Debug Message [06/08/2018 13:08:36 || Foo] UNDEFINED: This is a Undefined Level Message [06/08/2018 13:08:36 || ExampleClass] WARNING: This is a Warning Message [06/08/2018 13:08:36 || ExampleClass] INFO: This is a Info Message [06/08/2018 13:08:36 || ExampleClass] DEBUG: This is a Debug Message [06/08/2018 13:08:36 || ExampleClass] UNDEFINED: This is a Undefined Level Message
- Fichero prueba.log
[06/08/2018 13:08:36 || Foo] WARNING: This is a Warning Message
