diff --git a/tests/Makefile.am b/tests/Makefile.am
index 79c3ef6..04136f5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -28,6 +28,7 @@
 
 bitcomp_BitcompTest_SOURCES = bitcomp/BitcompTest.cpp ../src/egprs_rlc_compression.cpp
 bitcomp_BitcompTest_LDADD = \
+	$(top_builddir)/src/libgprs.la \
 	$(LIBOSMOCORE_LIBS) \
 	$(COMMON_LA)
 
diff --git a/tests/bitcomp/BitcompTest.cpp b/tests/bitcomp/BitcompTest.cpp
index 4ec6f29..8dd4534 100644
--- a/tests/bitcomp/BitcompTest.cpp
+++ b/tests/bitcomp/BitcompTest.cpp
@@ -113,26 +113,6 @@
 		}
 	};
 
-static const struct log_info_cat default_categories[] = {
-	{"DCSN1", "\033[1;31m", "Concrete Syntax Notation One (CSN1)", LOGL_INFO, 0},
-	{"DL1IF", "\033[1;32m", "GPRS PCU L1 interface (L1IF)", LOGL_DEBUG, 1},
-	{"DRLCMAC", "\033[0;33m", "GPRS RLC/MAC layer (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACDATA", "\033[0;33m", "GPRS RLC/MAC layer Data (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACDL", "\033[1;33m", "GPRS RLC/MAC layer Downlink (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACUL", "\033[1;36m", "GPRS RLC/MAC layer Uplink (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACSCHED", "\033[0;36m", "GPRS RLC/MAC layer Scheduling (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACMEAS", "\033[1;31m", "GPRS RLC/MAC layer Measurements (RLCMAC)", LOGL_INFO, 1},
-	{"DNS", "\033[1;34m", "GPRS Network Service Protocol (NS)", LOGL_INFO, 1},
-	{"DBSSGP", "\033[1;34m", "GPRS BSS Gateway Protocol (BSSGP)", LOGL_INFO, 1},
-	{"DPCU", "\033[1;35m", "GPRS Packet Control Unit (PCU)", LOGL_NOTICE, 1},
-};
-
-static int filter_fn(const struct log_context *ctx,
-			struct log_target *tar)
-{
-	return 1;
-}
-
 bool result_matches(const bitvec &bits, const uint8_t *exp_data, unsigned int exp_len)
 {
 	if (bits.cur_bit != exp_len)
@@ -206,17 +186,12 @@
 	printf("=== end %s ===\n", __func__);
 }
 
-const struct log_info debug_log_info = {
-	filter_fn,
-	(struct log_info_cat *)default_categories,
-	ARRAY_SIZE(default_categories),
-};
-
 int main(int argc, char **argv)
 {
-	osmo_init_logging(&debug_log_info);
+	osmo_init_logging(&gprs_log_info);
 	log_set_use_color(osmo_stderr_target, 0);
 	log_set_print_filename(osmo_stderr_target, 0);
+	log_parse_category_mask(osmo_stderr_target, "DRLCMACUL,1");
 
 	tall_pcu_ctx = talloc_named_const(NULL, 1, "moiji-mobile bitcompTest context");
 	if (!tall_pcu_ctx)
diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp
index 73aed37..1abdcfd 100644
--- a/tests/edge/EdgeTest.cpp
+++ b/tests/edge/EdgeTest.cpp
@@ -1154,32 +1154,6 @@
 	printf("=== end %s ===\n", __func__);
 }
 
-static const struct log_info_cat default_categories[] = {
-	{"DCSN1", "\033[1;31m", "Concrete Syntax Notation One (CSN1)", LOGL_INFO, 0},
-	{"DL1IF", "\033[1;32m", "GPRS PCU L1 interface (L1IF)", LOGL_DEBUG, 1},
-	{"DRLCMAC", "\033[0;33m", "GPRS RLC/MAC layer (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACDATA", "\033[0;33m", "GPRS RLC/MAC layer Data (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACDL", "\033[1;33m", "GPRS RLC/MAC layer Downlink (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACUL", "\033[1;36m", "GPRS RLC/MAC layer Uplink (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACSCHED", "\033[0;36m", "GPRS RLC/MAC layer Scheduling (RLCMAC)", LOGL_DEBUG, 1},
-	{"DRLCMACMEAS", "\033[1;31m", "GPRS RLC/MAC layer Measurements (RLCMAC)", LOGL_INFO, 1},
-	{"DNS","\033[1;34m", "GPRS Network Service Protocol (NS)", LOGL_INFO , 1},
-	{"DBSSGP","\033[1;34m", "GPRS BSS Gateway Protocol (BSSGP)", LOGL_INFO , 1},
-	{"DPCU", "\033[1;35m", "GPRS Packet Control Unit (PCU)", LOGL_NOTICE, 1},
-};
-
-static int filter_fn(const struct log_context *ctx,
-	struct log_target *tar)
-{
-	return 1;
-}
-
-const struct log_info debug_log_info = {
-	filter_fn,
-	(struct log_info_cat*)default_categories,
-	ARRAY_SIZE(default_categories),
-};
-
 static void setup_bts(BTS *the_bts, uint8_t ts_no, uint8_t cs = 1)
 {
 	gprs_rlcmac_bts *bts;
@@ -1425,12 +1399,12 @@
 		abort();
 
 	msgb_talloc_ctx_init(tall_pcu_ctx, 0);
-	osmo_init_logging(&debug_log_info);
+	osmo_init_logging(&gprs_log_info);
 	log_set_use_color(osmo_stderr_target, 0);
 	log_set_print_filename(osmo_stderr_target, 0);
 
 	vty_init(&pcu_vty_info);
-	pcu_vty_init(&debug_log_info);
+	pcu_vty_init(&gprs_log_info);
 
 	test_coding_scheme();
 	test_rlc_info_init();
diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp
index 8df010e..f827ef1 100644
--- a/tests/llc/LlcTest.cpp
+++ b/tests/llc/LlcTest.cpp
@@ -215,22 +215,6 @@
 	printf("=== end %s ===\n", __func__);
 }
 
-static const struct log_info_cat default_categories[] = {
-	{"DPCU", "", "GPRS Packet Control Unit (PCU)", LOGL_INFO, 1},
-};
-
-static int filter_fn(const struct log_context *ctx,
-	struct log_target *tar)
-{
-	return 1;
-}
-
-const struct log_info debug_log_info = {
-	filter_fn,
-	(struct log_info_cat*)default_categories,
-	ARRAY_SIZE(default_categories),
-};
-
 int main(int argc, char **argv)
 {
 	struct vty_app_info pcu_vty_info = {0};
@@ -240,13 +224,14 @@
 		abort();
 
 	msgb_talloc_ctx_init(tall_pcu_ctx, 0);
-	osmo_init_logging(&debug_log_info);
+	osmo_init_logging(&gprs_log_info);
 	log_set_use_color(osmo_stderr_target, 0);
 	log_set_print_filename(osmo_stderr_target, 0);
 	log_set_log_level(osmo_stderr_target, LOGL_INFO);
+	log_parse_category_mask(osmo_stderr_target, "DPCU,3");
 
 	vty_init(&pcu_vty_info);
-	pcu_vty_init(&debug_log_info);
+	pcu_vty_init(&gprs_log_info);
 
 	test_llc_queue();
 	test_llc_meta();
diff --git a/tests/ms/MsTest.cpp b/tests/ms/MsTest.cpp
index d66f578..ac35998 100644
--- a/tests/ms/MsTest.cpp
+++ b/tests/ms/MsTest.cpp
@@ -514,22 +514,6 @@
 	printf("=== end %s ===\n", __func__);
 }
 
-static const struct log_info_cat default_categories[] = {
-	{"DPCU", "", "GPRS Packet Control Unit (PCU)", LOGL_INFO, 1},
-};
-
-static int filter_fn(const struct log_context *ctx,
-	struct log_target *tar)
-{
-	return 1;
-}
-
-const struct log_info debug_log_info = {
-	filter_fn,
-	(struct log_info_cat*)default_categories,
-	ARRAY_SIZE(default_categories),
-};
-
 int main(int argc, char **argv)
 {
 	struct vty_app_info pcu_vty_info = {0};
@@ -539,13 +523,14 @@
 		abort();
 
 	msgb_talloc_ctx_init(tall_pcu_ctx, 0);
-	osmo_init_logging(&debug_log_info);
+	osmo_init_logging(&gprs_log_info);
 	log_set_use_color(osmo_stderr_target, 0);
 	log_set_print_filename(osmo_stderr_target, 0);
 	log_set_log_level(osmo_stderr_target, LOGL_INFO);
+	log_parse_category_mask(osmo_stderr_target, "DPCU,3:DRLCMAC,3");
 
 	vty_init(&pcu_vty_info);
-	pcu_vty_init(&debug_log_info);
+	pcu_vty_init(&gprs_log_info);
 
 	test_ms_state();
 	test_ms_callback();
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 0db7fde..195bec5 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -3182,32 +3182,6 @@
 
 
 
-static const struct log_info_cat default_categories[] = {
-        {"DCSN1", "\033[1;31m", "Concrete Syntax Notation One (CSN1)", LOGL_INFO, 0},
-        {"DL1IF", "\033[1;32m", "GPRS PCU L1 interface (L1IF)", LOGL_DEBUG, 1},
-        {"DRLCMAC", "\033[0;33m", "GPRS RLC/MAC layer (RLCMAC)", LOGL_DEBUG, 1},
-        {"DRLCMACDATA", "\033[0;33m", "GPRS RLC/MAC layer Data (RLCMAC)", LOGL_DEBUG, 1},
-        {"DRLCMACDL", "\033[1;33m", "GPRS RLC/MAC layer Downlink (RLCMAC)", LOGL_DEBUG, 1},
-        {"DRLCMACUL", "\033[1;36m", "GPRS RLC/MAC layer Uplink (RLCMAC)", LOGL_DEBUG, 1},
-        {"DRLCMACSCHED", "\033[0;36m", "GPRS RLC/MAC layer Scheduling (RLCMAC)", LOGL_DEBUG, 1},
-        {"DRLCMACMEAS", "\033[1;31m", "GPRS RLC/MAC layer Measurements (RLCMAC)", LOGL_INFO, 1},
-        {"DNS","\033[1;34m", "GPRS Network Service Protocol (NS)", LOGL_INFO , 1},
-        {"DBSSGP","\033[1;34m", "GPRS BSS Gateway Protocol (BSSGP)", LOGL_INFO , 1},
-        {"DPCU", "\033[1;35m", "GPRS Packet Control Unit (PCU)", LOGL_NOTICE, 1},
-};
-
-static int filter_fn(const struct log_context *ctx,
-                     struct log_target *tar)
-{
-        return 1;
-}
-
-const struct log_info debug_log_info = {
-	filter_fn,
-	(struct log_info_cat*)default_categories,
-	ARRAY_SIZE(default_categories),
-};
-
 static void test_packet_access_rej_prr_no_other_tbfs()
 {
 	BTS the_bts;
@@ -3348,13 +3322,15 @@
 		abort();
 
 	msgb_talloc_ctx_init(tall_pcu_ctx, 0);
-	osmo_init_logging(&debug_log_info);
+	osmo_init_logging(&gprs_log_info);
 	log_set_use_color(osmo_stderr_target, 0);
 	log_set_print_filename(osmo_stderr_target, 0);
 	bssgp_set_log_ss(DBSSGP);
+	log_parse_category_mask(osmo_stderr_target, "DL1IF,1:DRLCMAC,1:DRLCMACDATA,1:DRLCMACDL,1:"
+				"DRLCMACUL,1:DRLCMACSCHED,1:DRLCMACMEAS,3:DNS,3:DBSSGP,3:DPCU,5");
 
 	vty_init(&pcu_vty_info);
-	pcu_vty_init(&debug_log_info);
+	pcu_vty_init(&gprs_log_info);
 
 	test_tbf_base();
 	test_tbf_tlli_update();
