diff --git a/logtrace/.idea/.gitignore b/logtrace/.idea/.gitignore new file mode 100644 index 0000000..1299aea --- /dev/null +++ b/logtrace/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../:\java project\MultithreadedExportExcelData-master\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/logtrace/.idea/.name b/logtrace/.idea/.name new file mode 100644 index 0000000..56db958 --- /dev/null +++ b/logtrace/.idea/.name @@ -0,0 +1 @@ +ExportExcelData \ No newline at end of file diff --git a/logtrace/.idea/compiler.xml b/logtrace/.idea/compiler.xml new file mode 100644 index 0000000..d5b4978 --- /dev/null +++ b/logtrace/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/encodings.xml b/logtrace/.idea/encodings.xml new file mode 100644 index 0000000..6b11392 --- /dev/null +++ b/logtrace/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/jarRepositories.xml b/logtrace/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/logtrace/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml b/logtrace/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml new file mode 100644 index 0000000..44c1ba0 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml b/logtrace/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml new file mode 100644 index 0000000..ca0f837 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__cn_afterturn_easypoi_annotation_4_1_0.xml b/logtrace/.idea/libraries/Maven__cn_afterturn_easypoi_annotation_4_1_0.xml new file mode 100644 index 0000000..6602979 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__cn_afterturn_easypoi_annotation_4_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_alibaba_transmittable_thread_local_2_14_2.xml b/logtrace/.idea/libraries/Maven__com_alibaba_transmittable_thread_local_2_14_2.xml new file mode 100644 index 0000000..899f63f --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_alibaba_transmittable_thread_local_2_14_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml b/logtrace/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml new file mode 100644 index 0000000..0f099c7 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_10_3.xml b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_10_3.xml new file mode 100644 index 0000000..4507778 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_10_3.xml b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_10_3.xml new file mode 100644 index 0000000..29129b0 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_10_3.xml b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_10_3.xml new file mode 100644 index 0000000..e476b1b --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_10_3.xml b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_10_3.xml new file mode 100644 index 0000000..207d739 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_10_3.xml b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_10_3.xml new file mode 100644 index 0000000..494d78e --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_10_3.xml b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_10_3.xml new file mode 100644 index 0000000..0143158 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_10_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml b/logtrace/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml new file mode 100644 index 0000000..2c23f7b --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/logtrace/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml new file mode 100644 index 0000000..5246203 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml b/logtrace/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml new file mode 100644 index 0000000..d20505d --- /dev/null +++ b/logtrace/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml b/logtrace/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml new file mode 100644 index 0000000..7caed99 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml b/logtrace/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml new file mode 100644 index 0000000..6b94c18 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml b/logtrace/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml new file mode 100644 index 0000000..5f1e886 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__junit_junit_4_13_1.xml b/logtrace/.idea/libraries/Maven__junit_junit_4_13_1.xml new file mode 100644 index 0000000..467e6dd --- /dev/null +++ b/logtrace/.idea/libraries/Maven__junit_junit_4_13_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_8.xml b/logtrace/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_8.xml new file mode 100644 index 0000000..089100e --- /dev/null +++ b/logtrace/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_8.xml b/logtrace/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_8.xml new file mode 100644 index 0000000..a28be17 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml b/logtrace/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml new file mode 100644 index 0000000..a894af5 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml b/logtrace/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml new file mode 100644 index 0000000..40ef52b --- /dev/null +++ b/logtrace/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml b/logtrace/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml new file mode 100644 index 0000000..0773677 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_12_1.xml b/logtrace/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_12_1.xml new file mode 100644 index 0000000..7c8d673 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_12_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_33.xml b/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_33.xml new file mode 100644 index 0000000..2a1fc37 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_33.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_33.xml b/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_33.xml new file mode 100644 index 0000000..d0caadb --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_33.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_33.xml b/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_33.xml new file mode 100644 index 0000000..97528f4 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_33.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml b/logtrace/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml new file mode 100644 index 0000000..b07b289 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_assertj_assertj_core_3_13_2.xml b/logtrace/.idea/libraries/Maven__org_assertj_assertj_core_3_13_2.xml new file mode 100644 index 0000000..3407ee5 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_assertj_assertj_core_3_13_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_hamcrest_hamcrest_2_1.xml b/logtrace/.idea/libraries/Maven__org_hamcrest_hamcrest_2_1.xml new file mode 100644 index 0000000..ba1a2b0 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_hamcrest_hamcrest_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_hamcrest_hamcrest_core_2_1.xml b/logtrace/.idea/libraries/Maven__org_hamcrest_hamcrest_core_2_1.xml new file mode 100644 index 0000000..4309ea6 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_hamcrest_hamcrest_core_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_18_Final.xml b/logtrace/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_18_Final.xml new file mode 100644 index 0000000..1307b15 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_18_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml b/logtrace/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml new file mode 100644 index 0000000..ada1907 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_5_2.xml b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_5_2.xml new file mode 100644 index 0000000..2095a21 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_5_2.xml b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_5_2.xml new file mode 100644 index 0000000..bd507aa --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_5_2.xml b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_5_2.xml new file mode 100644 index 0000000..01939fb --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_5_2.xml b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_5_2.xml new file mode 100644 index 0000000..ebda8bb --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_5_2.xml b/logtrace/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_5_2.xml new file mode 100644 index 0000000..4952174 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_5_2.xml b/logtrace/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_5_2.xml new file mode 100644 index 0000000..d821809 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_5_2.xml b/logtrace/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_5_2.xml new file mode 100644 index 0000000..158f1f9 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_mockito_mockito_core_3_1_0.xml b/logtrace/.idea/libraries/Maven__org_mockito_mockito_core_3_1_0.xml new file mode 100644 index 0000000..c3a1f3f --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_mockito_mockito_core_3_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_1_0.xml b/logtrace/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_1_0.xml new file mode 100644 index 0000000..de5eb1d --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml b/logtrace/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml new file mode 100644 index 0000000..10fc9d3 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml b/logtrace/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml new file mode 100644 index 0000000..e43c22e --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml b/logtrace/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml new file mode 100644 index 0000000..4f737ae --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_projectlombok_lombok_1_18_24.xml b/logtrace/.idea/libraries/Maven__org_projectlombok_lombok_1_18_24.xml new file mode 100644 index 0000000..26767dc --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_projectlombok_lombok_1_18_24.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml b/logtrace/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml new file mode 100644 index 0000000..9b78e42 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml b/logtrace/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml new file mode 100644 index 0000000..0861f6d --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml b/logtrace/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml new file mode 100644 index 0000000..a442768 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_2_6_RELEASE.xml new file mode 100644 index 0000000..ee2bf20 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_2_6_RELEASE.xml new file mode 100644 index 0000000..7869059 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_2_6_RELEASE.xml new file mode 100644 index 0000000..3ca3167 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_2_6_RELEASE.xml new file mode 100644 index 0000000..da39468 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_2_6_RELEASE.xml new file mode 100644 index 0000000..3059fe4 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_2_6_RELEASE.xml new file mode 100644 index 0000000..452909e --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_2_6_RELEASE.xml new file mode 100644 index 0000000..f7b775c --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_2_6_RELEASE.xml new file mode 100644 index 0000000..a2388c7 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_2_6_RELEASE.xml new file mode 100644 index 0000000..1bacb5c --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_2_6_RELEASE.xml new file mode 100644 index 0000000..5d999d4 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_2_6_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_2_6_RELEASE.xml new file mode 100644 index 0000000..da5f265 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_2_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_aop_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_aop_5_2_5_RELEASE.xml new file mode 100644 index 0000000..aa9a77b --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_aop_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_beans_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_beans_5_2_5_RELEASE.xml new file mode 100644 index 0000000..d8352b1 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_beans_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_context_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_context_5_2_5_RELEASE.xml new file mode 100644 index 0000000..4e5e2f1 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_context_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_core_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_core_5_2_5_RELEASE.xml new file mode 100644 index 0000000..b23730c --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_core_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_expression_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_expression_5_2_5_RELEASE.xml new file mode 100644 index 0000000..14aaba1 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_expression_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_5_RELEASE.xml new file mode 100644 index 0000000..3fa0a6b --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_jcl_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_test_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_test_5_2_5_RELEASE.xml new file mode 100644 index 0000000..c0bcfe3 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_test_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_web_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_web_5_2_5_RELEASE.xml new file mode 100644 index 0000000..efc68d1 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_web_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_5_RELEASE.xml b/logtrace/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_5_RELEASE.xml new file mode 100644 index 0000000..17426d0 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_springframework_spring_webmvc_5_2_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_4.xml b/logtrace/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_4.xml new file mode 100644 index 0000000..942ddc2 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml b/logtrace/.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml new file mode 100644 index 0000000..7591084 --- /dev/null +++ b/logtrace/.idea/libraries/Maven__org_yaml_snakeyaml_1_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/logtrace.iml b/logtrace/.idea/logtrace.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/logtrace/.idea/logtrace.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/misc.xml b/logtrace/.idea/misc.xml new file mode 100644 index 0000000..ce72bc0 --- /dev/null +++ b/logtrace/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/logtrace/.idea/modules.xml b/logtrace/.idea/modules.xml new file mode 100644 index 0000000..ba8bfad --- /dev/null +++ b/logtrace/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/logtrace/logtrace/ExportExcelData.iml b/logtrace/logtrace/ExportExcelData.iml new file mode 100644 index 0000000..aa5d642 --- /dev/null +++ b/logtrace/logtrace/ExportExcelData.iml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/logtrace/logtrace/README.md b/logtrace/logtrace/README.md new file mode 100644 index 0000000..ab51106 --- /dev/null +++ b/logtrace/logtrace/README.md @@ -0,0 +1,46 @@ +# 多线程实现百万级数据导出到excel + +## **考虑前提:** + +大数据量导出到文件,首先需要考虑的是内存溢出的场景:数据库读取数据到内存中、将数据写入到excel进行大量的IO操作。然后考虑到一个文件数据过大,用户打开慢,体验不好。针对这些问题的考虑,采用多线程的方式多个线程同时处理查询数据,一个线程生成一个excel,最后在合并数据返回,以达到提高效率的目的。 + +## **实现思路:** +1.使用easyExecl结合批量线程池执行,结合线程分批处理数据缩短查询数据库时间和导出数据时间,查询数据速度比较理想 +测试接口:http://localhost:8080/exportEasyExcel?pageNum=0&pageSize=100000&limit=4000 +2.使用easyExecl结合循环线程池执行,结合线程分批处理数据缩短查询数据库时间和导出数据时间,查询数据速度不理想 +测试接口:http://localhost:8080/exportEasyExcelV1?pageNum=0&pageSize=60000&limit=2000 +3.使用SXSSFWorkbook结合批量线程池执行,结合线程分批处理数据缩短查询数据库时间和导出数据时间,效果最优最理想 +http://localhost:8080/exportEasyExcelV4?pageNum=0&pageSize=30000&limit=2000 + +模拟sql可以结合测试类本地造数据: +CREATE TABLE `user` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(255) DEFAULT NULL, + `phone` varchar(255) DEFAULT NULL, + `ceate_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `remark` varchar(255) DEFAULT NULL, + `birthday` datetime DEFAULT NULL, + `test1` varchar(255) DEFAULT NULL, + `test2` varchar(255) DEFAULT NULL, + `test3` varchar(255) DEFAULT NULL, + `test4` varchar(255) DEFAULT NULL, + `test5` varchar(255) DEFAULT NULL, + `test6` varchar(255) DEFAULT NULL, + `test7` varchar(255) DEFAULT NULL, + `test8` varchar(255) DEFAULT NULL, + `test9` varchar(255) DEFAULT NULL, + `test10` varchar(255) DEFAULT NULL, + `test11` varchar(255) DEFAULT NULL, + `test12` varchar(255) DEFAULT NULL, + `test13` varchar(255) DEFAULT NULL, + `test14` varchar(255) DEFAULT NULL, + `test15` varchar(255) DEFAULT NULL, + `test16` varchar(255) DEFAULT NULL, + `test17` varchar(255) DEFAULT NULL, + `test18` varchar(255) DEFAULT NULL, + `test19` varchar(255) DEFAULT NULL, + `test20` varchar(255) DEFAULT NULL, + `test21` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=600001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + diff --git a/logtrace/logtrace/pom.xml b/logtrace/logtrace/pom.xml new file mode 100644 index 0000000..ab2a74c --- /dev/null +++ b/logtrace/logtrace/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.6.RELEASE + + + + com.wm.file + ExportExcelData + 1.0-SNAPSHOT + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-logging + + + + + cn.afterturn + easypoi-annotation + 4.1.0 + + + + org.projectlombok + lombok + 1.18.24 + + + + com.alibaba + transmittable-thread-local + 2.14.2 + + + + org.springframework.boot + spring-boot-starter-test + test + + + junit + junit + 4.13.1 + test + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/logtrace/logtrace/src/main/java/com/wm/file/ExportExcelDataApplication.java b/logtrace/logtrace/src/main/java/com/wm/file/ExportExcelDataApplication.java new file mode 100644 index 0000000..54c3851 --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/ExportExcelDataApplication.java @@ -0,0 +1,22 @@ +package com.wm.file; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * @ClassName: ExportExcelDataApplication + * @Description: 启动类 + * @Author: woniu + * @Date: 2022/5/3 19:01 + **/ +@EnableAsync +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +public class ExportExcelDataApplication { + public static void main(String[] args) { + SpringApplication.run(ExportExcelDataApplication.class, args); + } +} diff --git a/logtrace/logtrace/src/main/java/com/wm/file/config/MyThreadPoolTaskExecutor.java b/logtrace/logtrace/src/main/java/com/wm/file/config/MyThreadPoolTaskExecutor.java new file mode 100644 index 0000000..7ab1053 --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/config/MyThreadPoolTaskExecutor.java @@ -0,0 +1,36 @@ +package com.wm.file.config; + + +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.Callable; +import java.util.concurrent.Future; +import org.slf4j.MDC; + +/** + * @Author: 蜗牛 + * @Date: 2023-2-19 11:13 + * @Description: + * Spring Boot 实现日志链路追踪,无需引入组件,让日志定位更方便! + */ +public final class MyThreadPoolTaskExecutor extends ThreadPoolTaskExecutor { + public MyThreadPoolTaskExecutor() { + super(); + } + + @Override + public void execute(Runnable task) { + super.execute(ThreadMdcUtil.wrap(task, MDC.getCopyOfContextMap())); + } + + + @Override + public Future submit(Callable task) { + return super.submit(ThreadMdcUtil.wrap(task, MDC.getCopyOfContextMap())); + } + + @Override + public Future submit(Runnable task) { + return super.submit(ThreadMdcUtil.wrap(task, MDC.getCopyOfContextMap())); + } +} \ No newline at end of file diff --git a/logtrace/logtrace/src/main/java/com/wm/file/config/ThreadMdcUtil.java b/logtrace/logtrace/src/main/java/com/wm/file/config/ThreadMdcUtil.java new file mode 100644 index 0000000..07ad5c8 --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/config/ThreadMdcUtil.java @@ -0,0 +1,76 @@ +package com.wm.file.config; + + +import org.slf4j.MDC; + +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Callable; + +/** + * @Author: woniu + * @Date: 2023-2-19 11:14 + * @Description: + * Spring Boot 实现日志链路追踪,无需引入组件,让日志定位更方便! + */ +public final class ThreadMdcUtil { + private static final String TRACE_ID = "TRACE_ID"; + + // 获取唯一性标识 + public static String generateTraceId() { + return UUID.randomUUID().toString(); + } + + public static void setTraceIdIfAbsent() { + if (MDC.get(TRACE_ID) == null) { + MDC.put(TRACE_ID, generateTraceId()); + } + } + + /** + * 用于父线程向线程池中提交任务时,将自身MDC中的数据复制给子线程 + * + * @param callable + * @param context + * @param + * @return + */ + public static Callable wrap(final Callable callable, final Map context) { + return () -> { + if (context == null) { + MDC.clear(); + } else { + MDC.setContextMap(context); + } + setTraceIdIfAbsent(); + try { + return callable.call(); + } finally { + MDC.clear(); + } + }; + } + + /** + * 用于父线程向线程池中提交任务时,将自身MDC中的数据复制给子线程 + * + * @param runnable + * @param context + * @return + */ + public static Runnable wrap(final Runnable runnable, final Map context) { + return () -> { + if (context == null) { + MDC.clear(); + } else { + MDC.setContextMap(context); + } + setTraceIdIfAbsent(); + try { + runnable.run(); + } finally { + MDC.clear(); + } + }; + } +} \ No newline at end of file diff --git a/logtrace/logtrace/src/main/java/com/wm/file/config/ThreadPoolConfig.java b/logtrace/logtrace/src/main/java/com/wm/file/config/ThreadPoolConfig.java new file mode 100644 index 0000000..0644824 --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/config/ThreadPoolConfig.java @@ -0,0 +1,42 @@ +package com.wm.file.config; + + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; + +import java.util.concurrent.Executor; + +/** + * @Author: woniu + * @Date: 2023-2-19 11:14 + * @Description: + * + * Spring Boot 实现日志链路追踪,无需引入组件,让日志定位更方便! + * + */ +@Configuration +@EnableAsync +public class ThreadPoolConfig { + /** + * 声明一个线程池 + * + * @return 执行器 + */ + @Bean("MyExecutor") + public Executor asyncExecutor() { + MyThreadPoolTaskExecutor executor = new MyThreadPoolTaskExecutor(); + //核心线程数5:线程池创建时候初始化的线程数 + executor.setCorePoolSize(5); + //最大线程数5:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程 + executor.setMaxPoolSize(5); + //缓冲队列500:用来缓冲执行任务的队列 + executor.setQueueCapacity(500); + //允许线程的空闲时间60秒:当超过了核心线程出之外的线程在空闲时间到达之后会被销毁 + executor.setKeepAliveSeconds(60); + //线程池名的前缀:设置好了之后可以方便我们定位处理任务所在的线程池 + executor.setThreadNamePrefix("asyncJCccc"); + executor.initialize(); + return executor; + } +} diff --git a/logtrace/logtrace/src/main/java/com/wm/file/config/WebConfigurerAdapter.java b/logtrace/logtrace/src/main/java/com/wm/file/config/WebConfigurerAdapter.java new file mode 100644 index 0000000..f4bf8d4 --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/config/WebConfigurerAdapter.java @@ -0,0 +1,28 @@ +package com.wm.file.config; + +import com.wm.file.intecepter.LogInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @Author: 蜗牛 + * @Date: 2023-2-19 10:47 + * @Description: + */ + +@Configuration +public class WebConfigurerAdapter implements WebMvcConfigurer { + @Bean + public LogInterceptor logInterceptor() { + return new LogInterceptor(); + } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(logInterceptor()).addPathPatterns("/**"); + //可以具体制定哪些需要拦截,哪些不拦截,其实也可以使用自定义注解更灵活完成 + // .excludePathPatterns("/testxx.html"); + } +} \ No newline at end of file diff --git a/logtrace/logtrace/src/main/java/com/wm/file/controller/ApiController.java b/logtrace/logtrace/src/main/java/com/wm/file/controller/ApiController.java new file mode 100644 index 0000000..a5950bc --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/controller/ApiController.java @@ -0,0 +1,39 @@ +package com.wm.file.controller; + + +import com.wm.file.service.OrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +@RequestMapping("api/") +@Slf4j +public class ApiController { + + @Autowired + private OrderService orderService; + + @ResponseBody + @GetMapping(value = "/pay/{orderSn}") + public String alipay(@PathVariable("orderSn") String orderSn) { + log.info("我开始了!"); + String result = orderService.alipay(orderSn); + log.info("我结束了!{}",result); + return result; + } + + @ResponseBody + @GetMapping(value = "/insert") + public String insert() throws InterruptedException { + log.info("我开始了!"); + orderService.insert(); + log.info("结束了!"); + return "ok"; + } + +} diff --git a/logtrace/logtrace/src/main/java/com/wm/file/intecepter/LogInterceptor.java b/logtrace/logtrace/src/main/java/com/wm/file/intecepter/LogInterceptor.java new file mode 100644 index 0000000..bde3dfe --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/intecepter/LogInterceptor.java @@ -0,0 +1,40 @@ +package com.wm.file.intecepter; + + +import org.slf4j.MDC; +import org.springframework.lang.Nullable; +import org.springframework.util.StringUtils; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.UUID; + +/** + * @Author: woniu + * @Date: 2023-2-19 10:45 + * @Description: + */ + +public class LogInterceptor implements HandlerInterceptor { + + private static final String TRACE_ID = "TRACE_ID"; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + String tid = UUID.randomUUID().toString().replace("-", ""); + //可以考虑让客户端传入链路ID,但需保证一定的复杂度唯一性;如果没使用默认UUID自动生成 + if (!StringUtils.isEmpty(request.getHeader("TRACE_ID"))) { + tid = request.getHeader("TRACE_ID"); + } + MDC.put(TRACE_ID, tid); + return true; + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, + @Nullable Exception ex) { + MDC.remove(TRACE_ID); + } + +} \ No newline at end of file diff --git a/logtrace/logtrace/src/main/java/com/wm/file/service/OrderService.java b/logtrace/logtrace/src/main/java/com/wm/file/service/OrderService.java new file mode 100644 index 0000000..098e085 --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/service/OrderService.java @@ -0,0 +1,7 @@ +package com.wm.file.service; + +public interface OrderService { + String alipay(String orderSn); + + public void insert() ; +} diff --git a/logtrace/logtrace/src/main/java/com/wm/file/service/OrderServiceImpl.java b/logtrace/logtrace/src/main/java/com/wm/file/service/OrderServiceImpl.java new file mode 100644 index 0000000..5d3901f --- /dev/null +++ b/logtrace/logtrace/src/main/java/com/wm/file/service/OrderServiceImpl.java @@ -0,0 +1,38 @@ +package com.wm.file.service; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +public class OrderServiceImpl implements OrderService { + + + @Override + public String alipay(String orderSn) { + try { + log.info("开始查询"); + Thread.sleep(1000); + int i = 10 / 0; + } catch (Exception e) { + log.error("有个错误:{}", e.getMessage()); + } + log.info("查询结束"); + return "haha"; + } + +// @Async("MyExecutor") + @Async + @Override + public void insert() { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + log.error("插入操作失败"); + } + log.info("正在执行插入操作"); + } + + +} diff --git a/logtrace/logtrace/src/main/resources/application.yml b/logtrace/logtrace/src/main/resources/application.yml new file mode 100644 index 0000000..e96b671 --- /dev/null +++ b/logtrace/logtrace/src/main/resources/application.yml @@ -0,0 +1,4 @@ +server: + port: 8826 +logging: + config: classpath:logback-spring.xml \ No newline at end of file diff --git a/logtrace/logtrace/src/main/resources/logback-spring.xml b/logtrace/logtrace/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..badcde3 --- /dev/null +++ b/logtrace/logtrace/src/main/resources/logback-spring.xml @@ -0,0 +1,34 @@ + + + + + + + + + [%X{TRACE_ID}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + + + + + ${log}/%d{yyyy-MM-dd}.log + + 30 + + + [%X{TRACE_ID}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + + 10MB + + + + + + + + + \ No newline at end of file diff --git a/logtrace/logtrace/src/test/java/com/wm/file/TestDemo.java b/logtrace/logtrace/src/test/java/com/wm/file/TestDemo.java new file mode 100644 index 0000000..8c1458e --- /dev/null +++ b/logtrace/logtrace/src/test/java/com/wm/file/TestDemo.java @@ -0,0 +1,73 @@ +package com.wm.file; + + +import lombok.extern.slf4j.Slf4j; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + + + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ExportExcelDataApplication.class)//springboot注解 +@Slf4j +public class TestDemo { + +// /** +// * 如何优雅的实现Spring Boot 异步线程间数据传递 +// */ +// @Test +// public void handlerAsync() { +// //1. 获取父线程的userId +// UserUtils.setUserId("232"); +// String userId = UserUtils.getUserId(); +// log.info("父线程的值:{}", userId); +// CompletableFuture.runAsync(() -> { +// //2. 设置子线程的值,复用 +// UserUtils.setUserId(userId); +// log.info("子线程的值:{}", UserUtils.getUserId()); +// }); +// } +// +// +// @Autowired +// private ThreadPoolTaskExecutor threadPoolTaskExecutor; +// +// /** +// * 线程池设置TaskDecorator +// */ +// @Test +// public void handlerAsync2() { +// UserUtils.setUserId("232"); +// log.info("父线程的用户信息:{}", UserUtils.getUserId()); +// //执行异步任务,需要指定的线程池 +// CompletableFuture.runAsync(() -> +// log.info("子线程的用户信息:{}", UserUtils.getUserId()), +// threadPoolTaskExecutor); +// } +// +// /** +// * TransmittableThreadLocal +// */ +// +// @Autowired +// private ThreadPoolExecutor threadPoolExecutor; +// +// @Test +// public void handlerAsync3() { +// UserUtilsTran.set("213"); +// log.info("父线程的用户信息:{}", UserUtilsTran.get()); +// +// CompletableFuture.runAsync(()-> +// log.info("子线程的用户信息:{}", UserUtilsTran.get()), +// threadPoolExecutor); +// } +// + + +} + + + + +