Skip to content

Commit

Permalink
chore: illustrate logging
Browse files Browse the repository at this point in the history
This commit shows how to configure and consume the logging library.
This was a prereq to building the config object, so that we could
see whether or not we need to provide a logging compatibility layer.
(I now believe that we do not.)
  • Loading branch information
cprice404 committed Jun 9, 2023
1 parent 994b2f2 commit 83cdfe0
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 26 deletions.
44 changes: 20 additions & 24 deletions examples/basic.exs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require Logger

defmodule Momento.Examples.Basic do
@cache_name 'test-cache'

Expand All @@ -8,7 +10,7 @@ defmodule Momento.Examples.Basic do

@spec issue_set(Momento.CacheClient.t(), String.t()) :: {String.t(), Task.t()}
def issue_set(cache_client, key) do
IO.puts("Executing a 'set' for key: #{key}")
Logger.info("Executing a 'set' for key: #{key}")

{key,
Task.async(fn -> Momento.CacheClient.set(cache_client, @cache_name, key, "foo", 42.2) end)}
Expand All @@ -19,16 +21,16 @@ defmodule Momento.Examples.Basic do
response = Task.await(set_task)

case response do
:success -> IO.puts("'set' successful for key #{key}")
{:error, error} -> IO.puts("Got an error for key #{key}: #{inspect(error)}")
:success -> Logger.info("'set' successful for key #{key}")
{:error, error} -> Logger.info("Got an error for key #{key}: #{inspect(error)}")
end

key
end

@spec issue_get(Momento.CacheClient.t(), String.t()) :: {String.t(), Task.t()}
def issue_get(cache_client, key) do
IO.puts("Executing a 'get' for key: #{key}")
Logger.info("Executing a 'get' for key: #{key}")
{key, Task.async(fn -> Momento.CacheClient.get(cache_client, @cache_name, key) end)}
end

Expand All @@ -37,33 +39,27 @@ defmodule Momento.Examples.Basic do
response = Task.await(get_task)

case response do
:hit -> IO.puts("'get' resulted in a 'hit' for key #{key}: #{inspect(response)}")
:miss -> IO.puts("'get' resulted in a 'miss' for key #{key}.")
{:error, error} -> IO.puts("Got an error for key #{key}: #{inspect(response)}")
:hit -> Logger.info("'get' resulted in a 'hit' for key #{key}: #{inspect(response)}")
:miss -> Logger.info("'get' resulted in a 'miss' for key #{key}.")
{:error, error} -> Logger.info("Got an error for key #{key}: #{inspect(response)}")
end

key
end
end

IO.puts("Hello world")
Logger.info("Hello world")
Logger.info("Hello logging world!")

config = %Momento.Configuration{}
cache_client = %Momento.CacheClient{config: config}

set_tasks =
1..20
|> Stream.map(&Momento.Examples.Basic.generate_key(&1))
|> Stream.map(&Momento.Examples.Basic.issue_set(cache_client, &1))
|> Enum.to_list()

get_tasks =
set_tasks
|> Stream.map(&Momento.Examples.Basic.await_set(&1))
|> Stream.map(&Momento.Examples.Basic.issue_get(cache_client, &1))
|> Enum.to_list()

# force the completion of the tasks
get_tasks
|> Stream.map(&Momento.Examples.Basic.await_get(&1))
|> Enum.to_list()
1..20
|> Enum.map(&Momento.Examples.Basic.generate_key(&1))
|> Enum.map(&Momento.Examples.Basic.issue_set(cache_client, &1))
|> Enum.map(&Momento.Examples.Basic.await_set(&1))
|> Enum.map(&Momento.Examples.Basic.issue_get(cache_client, &1))
|> Enum.map(&Momento.Examples.Basic.await_get(&1))



5 changes: 5 additions & 0 deletions examples/config/config.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import Config

config :logger, :console,
format: "[$level] $message $metadata\n",
metadata: [:error_code, :mfa]
6 changes: 4 additions & 2 deletions src/lib/momento/cache_client.ex
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
defmodule Momento.CacheClient do
require Logger

@moduledoc """
Documentation for `Momento.CacheClient`.
"""
Expand All @@ -20,7 +22,7 @@ defmodule Momento.CacheClient do
def set(cache_client, cache_name, key, value, ttl_seconds) do
time_to_sleep = :rand.uniform(100)
:timer.sleep(time_to_sleep)
IO.puts("Completed 'set' for key #{key}")
Logger.info("Completed 'set' for key #{key}")
rand = :rand.uniform(2)

case rand do
Expand All @@ -41,7 +43,7 @@ defmodule Momento.CacheClient do
def get(cache_client, cache_name, key) do
time_to_sleep = :rand.uniform(100)
:timer.sleep(time_to_sleep)
IO.puts("Completed 'get' for key #{key}")
Logger.info("Completed 'get' for key #{key}")
rand = :rand.uniform(3)

case rand do
Expand Down

0 comments on commit 83cdfe0

Please sign in to comment.