-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #39 from BarbDMC/example/add-basic-usage
Add basic usage example
- Loading branch information
Showing
9 changed files
with
204 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
.stack-work/ | ||
*~ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# logger-example | ||
|
||
This Haskell code example demonstrates a basic logging simulation. | ||
|
||
It emulates a logging operation that sequentially generates a set of log messages. Within a loop, it prints messages to the console, ranging from "Log message 1" to "Log message 5". Each message is printed alongside a confirmation that it has been logged, with a 1-second delay between messages. | ||
|
||
Upon reaching "Log message 5", the process shifts from console output to writing this message into a log file. | ||
|
||
|
||
## How to use this example | ||
|
||
### Required dependencies | ||
|
||
- atomic-write | ||
- text | ||
- filepath | ||
|
||
|
||
### Run Example | ||
|
||
- Use the command: `stack run` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
import Distribution.Simple | ||
main = defaultMain |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Log message 5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import System.AtomicWrite.Writer.Text | ||
import qualified Data.Text as T | ||
import qualified Data.Text.IO as TIO | ||
import Control.Monad (forM_) | ||
import Control.Concurrent (forkIO, threadDelay) | ||
|
||
logFilePath :: FilePath | ||
logFilePath = "app.log" | ||
|
||
logMessage :: FilePath -> T.Text -> IO () | ||
logMessage logFile message = atomicWriteFile logFile message | ||
|
||
simulateLoggingProcess :: FilePath -> IO () | ||
simulateLoggingProcess logFile = do | ||
forM_ [1..10 :: Int] $ \i -> do | ||
let message = "Log message " <> show i | ||
logMessage logFile (T.pack message) | ||
putStrLn $ "Logged: " <> message | ||
threadDelay 1000000 | ||
|
||
main :: IO () | ||
main = do | ||
TIO.writeFile logFilePath mempty | ||
|
||
_ <- forkIO (simulateLoggingProcess logFilePath) | ||
|
||
threadDelay 5000000 | ||
|
||
putStrLn "Log file contents: " | ||
TIO.readFile logFilePath >>= TIO.putStrLn |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
cabal-version: 2.2 | ||
|
||
-- This file has been generated from package.yaml by hpack version 0.36.0. | ||
-- | ||
-- see: https://github.com/sol/hpack | ||
|
||
name: logger-example | ||
version: 0.1.0.0 | ||
description: Please see the README on GitHub at <https://github.com/githubuser/logger-example#readme> | ||
homepage: https://github.com/githubuser/logger-example#readme | ||
bug-reports: https://github.com/githubuser/logger-example/issues | ||
author: Author name here | ||
maintainer: [email protected] | ||
copyright: 2023 Author name here | ||
license: BSD-3-Clause | ||
license-file: LICENSE | ||
build-type: Simple | ||
extra-source-files: | ||
README.md | ||
CHANGELOG.md | ||
|
||
source-repository head | ||
type: git | ||
location: https://github.com/githubuser/logger-example | ||
|
||
library | ||
exposed-modules: | ||
Lib | ||
other-modules: | ||
Paths_logger_example | ||
autogen-modules: | ||
Paths_logger_example | ||
hs-source-dirs: | ||
src | ||
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints | ||
build-depends: | ||
atomic-write >=0.2 | ||
, base >=4.7 && <5 | ||
, filepath >=1.4 && <2 | ||
, text >=2.0 | ||
default-language: Haskell2010 | ||
|
||
executable logger-example-exe | ||
main-is: Main.hs | ||
other-modules: | ||
Paths_logger_example | ||
autogen-modules: | ||
Paths_logger_example | ||
hs-source-dirs: | ||
app | ||
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N | ||
build-depends: | ||
atomic-write >=0.2 | ||
, base >=4.7 && <5 | ||
, filepath >=1.4 && <2 | ||
, logger-example | ||
, text >=2.0 | ||
default-language: Haskell2010 | ||
|
||
test-suite logger-example-test | ||
type: exitcode-stdio-1.0 | ||
main-is: Spec.hs | ||
other-modules: | ||
Paths_logger_example | ||
autogen-modules: | ||
Paths_logger_example | ||
hs-source-dirs: | ||
test | ||
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N | ||
build-depends: | ||
atomic-write >=0.2 | ||
, base >=4.7 && <5 | ||
, filepath >=1.4 && <2 | ||
, logger-example | ||
, text >=2.0 | ||
default-language: Haskell2010 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
name: logger-example | ||
version: 0.1.0.0 | ||
github: "stackbuilders/atomic-write" | ||
license: BSD-3-Clause | ||
author: "@BarbDMC" | ||
maintainer: "[email protected]" | ||
copyright: "2023 @BarbDMC" | ||
|
||
extra-source-files: | ||
- README.md | ||
- CHANGELOG.md | ||
|
||
# Metadata used when publishing your package | ||
# synopsis: Short description of your package | ||
# category: Web | ||
|
||
# To avoid duplicated efforts in documentation and dealing with the | ||
# complications of embedding Haddock markup inside cabal files, it is | ||
# common to point users to the README.md file. | ||
description: Please see the README on GitHub at <https://github.com/githubuser/logger-example#readme> | ||
|
||
dependencies: | ||
- base >= 4.7 && < 5 | ||
- atomic-write >= 0.2 | ||
- text >= 2.0 | ||
- filepath >= 1.4 && < 2 | ||
|
||
ghc-options: | ||
- -Wall | ||
- -Wcompat | ||
- -Widentities | ||
- -Wincomplete-record-updates | ||
- -Wincomplete-uni-patterns | ||
- -Wmissing-export-lists | ||
- -Wmissing-home-modules | ||
- -Wpartial-fields | ||
- -Wredundant-constraints | ||
|
||
library: | ||
source-dirs: src | ||
|
||
executables: | ||
logger-example-exe: | ||
main: Main.hs | ||
source-dirs: app | ||
ghc-options: | ||
- -threaded | ||
- -rtsopts | ||
- -with-rtsopts=-N | ||
dependencies: | ||
- logger-example | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
|
||
resolver: | ||
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/19.yaml | ||
|
||
|
||
packages: | ||
- . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# This file was autogenerated by Stack. | ||
# You should not edit this file by hand. | ||
# For more information, please see the documentation at: | ||
# https://docs.haskellstack.org/en/stable/lock_files | ||
|
||
packages: [] | ||
snapshots: | ||
- completed: | ||
sha256: fb482b8e2d5d061cdda4ba1da2957c012740c893a5ee1c1b99001adae7b1fbe7 | ||
size: 640046 | ||
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/19.yaml | ||
original: | ||
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/21/19.yaml |