Comments (3)
Can you provide a minimal repro? And do you know if you're logging in UTF-8? It's known to potentially interleave output for non-UTF-8 output.
from rio.
I've been logging to stderr in ubuntu:18.04
docker image. And it turn out that it stderr
is non-UTF-8 be default:
Prelude GHC.IO.Handle.Internals GHC.IO.Handle.Types GHC.IO.Handle System.IO> wantWritableHandle "a" stderr (\x -> pure $ haCodec x)
Just ASCII
root@3b1b7a80967f:/# LANG=C.UTF-8 /usr/local/bin/stack ghci
Prelude System.IO GHC.IO.Handle GHC.IO.Handle.Internals GHC.IO.Handle.Types> wantWritableHandle "a" stderr (\x -> pure $ haCodec x)
Just UTF-8
This explains why everything worked fine on my Mac, but failed after deploying to K8.
Thank you for a prompt reply!
Is this anything that should be fixed, or just behavior by design?
from rio.
It's definitely "by design" in this case: the text
package unfortunately does I/O very poorly, and we're relying on its behavior for non-UTF-8 backends. We could theoretically do some locking, but that will only fix the issue within rio
; other pieces of the system still working directly with stderr
could have issues. Overall, my preference is to fix this with documentation, and advertise loudly that non-interleaving is only accounted for with UTF-8 output. Would you be open to writing a PR with such a doc fix?
from rio.
Related Issues (20)
- documentation: it's not clear what the "source" argument to logInfoS and friends is for HOT 3
- missing a way to modify a logfunc to provide context HOT 5
- RIO.Process is running an "original" instead of a symbolic link HOT 7
- RIO.Process does not allow to Linux style operations on Windows and vice versa (or I didn't find the way to do it). HOT 1
- RIO module exports words :: String -> [String] HOT 1
- Lifting to Path HOT 1
- Multi-threaded logging HOT 2
- A simple way to extend `SimpleApp`? HOT 3
- augmentPathMap assumes uppercase PATH on windows HOT 10
- Possible bug in RIO's MoandWriter (listen and pass) implementations HOT 2
- fold*1 variants for NonEmpty HOT 3
- Question: is there any chance to move logger to external library and expose some internals? HOT 3
- StrictData language extension HOT 1
- Explain how RIO.Vector relates to Data.Vector?
- Rio.Process shell (like proc) HOT 3
- HLint is triggered
- Unexpected omissions from submodule exports (e.g., RIO.Vector.iforM_) HOT 2
- How to improve integration with Haskeline or vty, using RIO with a terminal interface.
- Image in `README.md` broken HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rio.