Clarify duplicate logger error (#6757)
# Objective When a global tracing subscriber has already been set, `LogPlugin` panics with an error message explaining this. However, if a global logger has already been set, it simply panics on an unwrap. #6426 mentiones the panic and has been fixed by unique plugins, but the panic can still occur if a logger has been set through different means or multiple apps are created, as in #4934. The solution to that specific case isn't clear; this PR only fixes the missing error message. ## Solution - ~add error message to panic~ - turn into warning
This commit is contained in:
		
							parent
							
								
									64642fbd3c
								
							
						
					
					
						commit
						2364a305c0
					
				| @ -114,8 +114,8 @@ impl Plugin for LogPlugin { | ||||
|             })); | ||||
|         } | ||||
| 
 | ||||
|         let finished_subscriber; | ||||
|         let default_filter = { format!("{},{}", self.level, self.filter) }; | ||||
|         LogTracer::init().unwrap(); | ||||
|         let filter_layer = EnvFilter::try_from_default_env() | ||||
|             .or_else(|_| EnvFilter::try_new(&default_filter)) | ||||
|             .unwrap(); | ||||
| @ -166,25 +166,33 @@ impl Plugin for LogPlugin { | ||||
|             #[cfg(feature = "tracing-tracy")] | ||||
|             let subscriber = subscriber.with(tracy_layer); | ||||
| 
 | ||||
|             bevy_utils::tracing::subscriber::set_global_default(subscriber) | ||||
|                 .expect("Could not set global default tracing subscriber. If you've already set up a tracing subscriber, please disable LogPlugin from Bevy's DefaultPlugins"); | ||||
|             finished_subscriber = subscriber; | ||||
|         } | ||||
| 
 | ||||
|         #[cfg(target_arch = "wasm32")] | ||||
|         { | ||||
|             console_error_panic_hook::set_once(); | ||||
|             let subscriber = subscriber.with(tracing_wasm::WASMLayer::new( | ||||
|             finished_subscriber = subscriber.with(tracing_wasm::WASMLayer::new( | ||||
|                 tracing_wasm::WASMLayerConfig::default(), | ||||
|             )); | ||||
|             bevy_utils::tracing::subscriber::set_global_default(subscriber) | ||||
|                 .expect("Could not set global default tracing subscriber. If you've already set up a tracing subscriber, please disable LogPlugin from Bevy's DefaultPlugins"); | ||||
|         } | ||||
| 
 | ||||
|         #[cfg(target_os = "android")] | ||||
|         { | ||||
|             let subscriber = subscriber.with(android_tracing::AndroidLayer::default()); | ||||
|             bevy_utils::tracing::subscriber::set_global_default(subscriber) | ||||
|                 .expect("Could not set global default tracing subscriber. If you've already set up a tracing subscriber, please disable LogPlugin from Bevy's DefaultPlugins"); | ||||
|             finished_subscriber = subscriber.with(android_tracing::AndroidLayer::default()); | ||||
|         } | ||||
| 
 | ||||
|         let logger_already_set = LogTracer::init().is_err(); | ||||
|         let subscriber_already_set = | ||||
|             bevy_utils::tracing::subscriber::set_global_default(finished_subscriber).is_err(); | ||||
| 
 | ||||
|         match (logger_already_set, subscriber_already_set) { | ||||
|             (true, true) => warn!( | ||||
|                 "Could not set global logger and tracing subscriber as they are already set. Consider disabling LogPlugin." | ||||
|             ), | ||||
|             (true, _) => warn!("Could not set global logger as it is already set. Consider disabling LogPlugin."), | ||||
|             (_, true) => warn!("Could not set global tracing subscriber as it is already set. Consider disabling LogPlugin."), | ||||
|             _ => (), | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 SpecificProtagonist
						SpecificProtagonist