Comments (6)
Hi, that's an interesting approach and I like it.
However, we need to make sure that the logger does not try to write to disk: would you solution make sure of that?
from laravel-bridge.
Well we could filter channels to remove all that use filesystem as storage. User still could use some custom channel that writes to disk, but I think the risk is very low.
// We remove single and daily channels and ensure that stderr is used
$logDriver = Config::get('logging.default');
if ($logDriver === 'stack') {
$channels = array_filter(Config::get('logging.channels.stack.channels', []), function ($value) {
return !in_array($value, ['single', 'daily']);
});
array_push($channels, 'stderr');
Config::set('logging.channels.stack.channels', array_unique($channels));
}
It's not a perfect solution, but I think can solve most use cases. Syslog and errorlog aren't a problem, right?
What do you think?
from laravel-bridge.
Right, that makes sense. However that sounds fragile to me: new versions of Laravel could very well rename single
to something else for example.
I would love to find a solution that's a bit more reliable for the future, but I'm not sure what/how 🤔
from laravel-bridge.
As one who also uses Bugsnag and is looking to use this project in production, I'd rather accept the risk of the filesystem being implemented in a Laravel upgrade where my radar is up for potential issues than sacrifice Bugsnag support. So I'd be a fan of just eliminating the logging file aliases.
from laravel-bridge.
The variable name $logDriver
is a bit misleading. The code reads from the configuration 'logging.default'
, which is actually the channel name.
I think the easiest solution just set the LOG_CHANNEL
environment variable to be a custom one, e.g. lambda-stack
, and put only stderr
and bugsnag
into the channels
array.
'lambda-stack' => [
'driver' => 'stack',
'channels' => [
'bugsnag',
'stderr',
],
'ignore_exceptions' => false,
],
from laravel-bridge.
Just got stung by this issue while trying to add Flare to the stack log channel.
One solution might be to add a new log channel named serverless
to the logging config, then change the code snippet in the OP to always set the default logging channel to serverless
. By default that could only include the stderr
driver, but users could add whatever other drivers they want as well. The docs would need to point this out and mention that channels that expect access to a filesystem shouldn't be used.
In any case, this issue definitely needs mentioning in the docs.
from laravel-bridge.
Related Issues (20)
- Option to not run config:cache? HOT 7
- View not found in Laravel when I cache the views
- Uploaded files are not shown in S3 Bucket
- Error Unzipped size must be smaller than 209927080 bytes. HOT 1
- SES - Request to AWS SES API failed. Reason: The Security Token included in the request is invalid HOT 1
- [v2] Issues with Build Server HOT 1
- storage directory creation causes permission issues with bref/php-82-fpm-dev:2 HOT 6
- Using multiple queues on a single connection: is this possible? HOT 3
- SQS QueueHandler tried to delete message, got error `400 Bad Request` HOT 7
- Queue worker does not respect `maxExceptions` HOT 8
- SQS - get InvalidClientTokenId (client): The security token included in the request is invalid HOT 1
- Compatibility with Octane 2.x HOT 2
- Output on STDERR during initialization: is there is a way to not having that? HOT 4
- Cannot deploy project anymore HOT 1
- When using Laravel Passport the storage is overridden to /tmp before the keys are loaded HOT 2
- Reading the AWS Request ID HOT 9
- Is there a way to disable the automatic logging added by this package for "Job Processing" and "Job Processed" ? HOT 6
- If the queue is SQS, retries due to job timeouts are different from retries due to errors.
- App::runningInConsole() returning true on web function when octane is turned on HOT 1
- Invalid configuration value provided for "token". Expected Aws\Token\TokenInterface|Aws\CacheInterface|array|bool|callable, but got string 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 laravel-bridge.