@@ -184,6 +184,32 @@ public function getEnableLogs(): bool
184184 return $ this ->options ['enable_logs ' ] ?? false ;
185185 }
186186
187+ /**
188+ * Gets the number of buffered logs that trigger an immediate flush.
189+ */
190+ public function getLogFlushThreshold (): ?int
191+ {
192+ /**
193+ * @var int|null $logFlushThreshold
194+ */
195+ $ logFlushThreshold = $ this ->options ['log_flush_threshold ' ];
196+
197+ return $ logFlushThreshold ;
198+ }
199+
200+ /**
201+ * Sets the number of buffered logs that trigger an immediate flush.
202+ * null will never trigger an immediate flush.
203+ */
204+ public function setLogFlushThreshold (?int $ logFlushThreshold ): self
205+ {
206+ $ options = array_merge ($ this ->options , ['log_flush_threshold ' => $ logFlushThreshold ]);
207+
208+ $ this ->options = $ this ->resolver ->resolve ($ options );
209+
210+ return $ this ;
211+ }
212+
187213 /**
188214 * Sets if metrics should be enabled or not.
189215 */
@@ -1337,6 +1363,7 @@ private function configureOptions(OptionsResolver $resolver): void
13371363 'sample_rate ' => 1 ,
13381364 'enable_tracing ' => null ,
13391365 'enable_logs ' => false ,
1366+ 'log_flush_threshold ' => null ,
13401367 'enable_metrics ' => true ,
13411368 'traces_sample_rate ' => null ,
13421369 'traces_sampler ' => null ,
@@ -1414,6 +1441,7 @@ private function configureOptions(OptionsResolver $resolver): void
14141441 $ resolver ->setAllowedTypes ('sample_rate ' , ['int ' , 'float ' ]);
14151442 $ resolver ->setAllowedTypes ('enable_tracing ' , ['null ' , 'bool ' ]);
14161443 $ resolver ->setAllowedTypes ('enable_logs ' , 'bool ' );
1444+ $ resolver ->setAllowedTypes ('log_flush_threshold ' , ['null ' , 'int ' ]);
14171445 $ resolver ->setAllowedTypes ('enable_metrics ' , 'bool ' );
14181446 $ resolver ->setAllowedTypes ('traces_sample_rate ' , ['null ' , 'int ' , 'float ' ]);
14191447 $ resolver ->setAllowedTypes ('traces_sampler ' , ['null ' , 'callable ' ]);
@@ -1467,6 +1495,7 @@ private function configureOptions(OptionsResolver $resolver): void
14671495 $ resolver ->setAllowedValues ('max_breadcrumbs ' , \Closure::fromCallable ([$ this , 'validateMaxBreadcrumbsOptions ' ]));
14681496 $ resolver ->setAllowedValues ('class_serializers ' , \Closure::fromCallable ([$ this , 'validateClassSerializersOption ' ]));
14691497 $ resolver ->setAllowedValues ('context_lines ' , \Closure::fromCallable ([$ this , 'validateContextLinesOption ' ]));
1498+ $ resolver ->setAllowedValues ('log_flush_threshold ' , \Closure::fromCallable ([$ this , 'validateLogFlushThresholdOption ' ]));
14701499
14711500 $ resolver ->setNormalizer ('dsn ' , \Closure::fromCallable ([$ this , 'normalizeDsnOption ' ]));
14721501
@@ -1632,4 +1661,14 @@ private function validateContextLinesOption(?int $contextLines): bool
16321661 {
16331662 return $ contextLines === null || $ contextLines >= 0 ;
16341663 }
1664+
1665+ /**
1666+ * Validates that the value passed to the "log_flush_threshold" option is valid.
1667+ *
1668+ * @param int|null $logFlushThreshold The value to validate
1669+ */
1670+ private function validateLogFlushThresholdOption (?int $ logFlushThreshold ): bool
1671+ {
1672+ return $ logFlushThreshold === null || $ logFlushThreshold > 0 ;
1673+ }
16351674}
0 commit comments