Tracks
/
Gleam
Gleam
/
Exercises
/
Log Levels
Log Levels

Log Levels

Learning Exercise

Introduction

Strings

Strings in Gleam are immutable text surrounded by double quotes. They support unicode characters, and can be multi-line.

let greeting = "Hello, Joe! πŸ“ž"

let multi_line_string = "one
two
three"

Strings can be joined together using the <> operator:

let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"

The gleam/string module in the standard library provides functions for working with strings.

Strings can be matched upon in case expressions:

pub fn on_an_excellent_adventure(name: String) -> Bool {
  case name {
    "Bill" -> True
    "Ted" -> True
    _ -> False
  }
}

If you want to match on the beginning of a string and assign the rest to a variable you can use the <> operator pattern:

pub fn profession(name: String) -> String {
  case name {
    "Dr " <> rest -> rest <> " is a doctor"
    _ -> "I'm not sure what " <> name <> " does"
  }
}

Instructions

In this exercise you'll be processing log-lines.

Each log line is a string formatted as follows: "[<LEVEL>]: <MESSAGE>".

There are three different log levels:

  • INFO
  • WARNING
  • ERROR

You have three tasks, each of which will take a log line and ask you to do something with it.

1. Get message from a log line

Implement the message function to return a log line's message:

message("[ERROR]: Invalid operation")
// -> "Invalid operation"

Any leading or trailing white space should be removed:

message("[WARNING]:  Disk almost full\r\n")
// -> "Disk almost full"

2. Get log level from a log line

Implement the log_level function to return a log line's log level, which should be returned in lowercase:

log_level("[ERROR]: Invalid operation")
// -> "error"

3. Reformat a log line

Implement the reformat function that reformats the log line, putting the message first and the log level after it in parentheses:

reformat("[INFO]: Operation completed")
// -> "Operation completed (info)"
Edit via GitHub The link opens in a new window or tab
Gleam Exercism

Ready to start Log Levels?

Sign up to Exercism to learn and master Gleam with 36 concepts, 125 exercises, and real human mentoring, all for free.