diff --git a/openbsc/src/libcommon/oap_client.c b/openbsc/src/libcommon/oap_client.c
index 92140c1..46dbcdd 100644
--- a/openbsc/src/libcommon/oap_client.c
+++ b/openbsc/src/libcommon/oap_client.c
@@ -38,12 +38,12 @@
 		goto disable;
 
 	if (config->secret_k_present == 0) {
-		LOGP(DGPRS, LOGL_NOTICE, "OAP: client ID set, but secret K missing.\n");
+		LOGP(DLOAP, LOGL_NOTICE, "OAP: client ID set, but secret K missing.\n");
 		goto disable;
 	}
 
 	if (config->secret_opc_present == 0) {
-		LOGP(DGPRS, LOGL_NOTICE, "OAP: client ID set, but secret OPC missing.\n");
+		LOGP(DLOAP, LOGL_NOTICE, "OAP: client ID set, but secret OPC missing.\n");
 		goto disable;
 	}
 
@@ -101,16 +101,16 @@
 	osmo_auth_gen_vec(&vec, &auth, rx_random);
 
 	if (vec.res_len != 8) {
-		LOGP(DGPRS, LOGL_ERROR, "OAP: Expected XRES to be 8 octets, got %d\n",
+		LOGP(DLOAP, LOGL_ERROR, "OAP: Expected XRES to be 8 octets, got %d\n",
 		     vec.res_len);
 		return -3;
 	}
 
 	if (osmo_constant_time_cmp(vec.autn, rx_autn, sizeof(vec.autn)) != 0) {
-		LOGP(DGPRS, LOGL_ERROR, "OAP: AUTN mismatch!\n");
-		LOGP(DGPRS, LOGL_INFO, "OAP: AUTN from server: %s\n",
+		LOGP(DLOAP, LOGL_ERROR, "OAP: AUTN mismatch!\n");
+		LOGP(DLOAP, LOGL_INFO, "OAP: AUTN from server: %s\n",
 		     osmo_hexdump_nospc(rx_autn, sizeof(vec.autn)));
-		LOGP(DGPRS, LOGL_INFO, "OAP: AUTN expected:    %s\n",
+		LOGP(DLOAP, LOGL_INFO, "OAP: AUTN expected:    %s\n",
 		     osmo_hexdump_nospc(vec.autn, sizeof(vec.autn)));
 		return -2;
 	}
@@ -135,7 +135,7 @@
 	struct osmo_oap_message oap_msg = {0};
 
 	if (client_id < 1) {
-		LOGP(DGPRS, LOGL_ERROR, "OAP: Invalid client ID: %d\n", client_id);
+		LOGP(DLOAP, LOGL_ERROR, "OAP: Invalid client ID: %d\n", client_id);
 		return NULL;
 	}
 
@@ -175,7 +175,7 @@
 	uint8_t xres[8];
 
 	if (!(oap_rx->rand_present && oap_rx->autn_present)) {
-		LOGP(DGPRS, LOGL_ERROR,
+		LOGP(DLOAP, LOGL_ERROR,
 		     "OAP challenge incomplete (rand_present: %d, autn_present: %d)\n",
 		     oap_rx->rand_present, oap_rx->autn_present);
 		rc = -2;
@@ -218,7 +218,7 @@
 
 	rc = osmo_oap_decode(&oap_msg, data, data_len);
 	if (rc < 0) {
-		LOGP(DGPRS, LOGL_ERROR,
+		LOGP(DLOAP, LOGL_ERROR,
 		     "Decoding OAP message failed with error '%s' (%d)\n",
 		     get_value_string(gsm48_gmm_cause_names, -rc), -rc);
 		return -10;
@@ -234,7 +234,7 @@
 		break;
 
 	case OAP_MSGT_REGISTER_ERROR:
-		LOGP(DGPRS, LOGL_ERROR,
+		LOGP(DLOAP, LOGL_ERROR,
 		     "OAP registration failed\n");
 		state->state = OAP_INITIALIZED;
 		if (state->registration_failures < 3) {
@@ -245,13 +245,13 @@
 
 	case OAP_MSGT_REGISTER_REQUEST:
 	case OAP_MSGT_CHALLENGE_RESULT:
-		LOGP(DGPRS, LOGL_ERROR,
+		LOGP(DLOAP, LOGL_ERROR,
 		     "Received invalid OAP message type for OAP client side: %d\n",
 		     (int)oap_msg.message_type);
 		return -12;
 
 	default:
-		LOGP(DGPRS, LOGL_ERROR,
+		LOGP(DLOAP, LOGL_ERROR,
 		     "Unknown OAP message type: %d\n",
 		     (int)oap_msg.message_type);
 		return -13;
diff --git a/openbsc/tests/oap/oap_client_test.c b/openbsc/tests/oap/oap_client_test.c
index 1473146..a54e386 100644
--- a/openbsc/tests/oap/oap_client_test.c
+++ b/openbsc/tests/oap/oap_client_test.c
@@ -213,17 +213,12 @@
 	msgb_free(msg_rx);
 }
 
-static struct log_info_cat gprs_categories[] = {
-	[DGPRS] = {
-		.name = "DGPRS",
-		.description = "GPRS Packet Service",
-		.enabled = 1, .loglevel = LOGL_DEBUG,
-	},
+static struct log_info_cat oap_client_test_categories[] = {
 };
 
 static struct log_info info = {
-	.cat = gprs_categories,
-	.num_cat = ARRAY_SIZE(gprs_categories),
+	.cat = oap_client_test_categories,
+	.num_cat = ARRAY_SIZE(oap_client_test_categories),
 };
 
 int main(int argc, char **argv)
@@ -232,10 +227,11 @@
 	osmo_init_logging(&info);
 
 	OSMO_ASSERT(osmo_stderr_target);
-	osmo_stderr_target->use_color = 0;
-	osmo_stderr_target->print_timestamp = 0;
-	osmo_stderr_target->print_filename = 0;
-	osmo_stderr_target->print_category = 1;
+	log_set_use_color(osmo_stderr_target, 0);
+	log_set_print_timestamp(osmo_stderr_target, 0);
+	log_set_print_filename(osmo_stderr_target, 0);
+	log_set_print_category(osmo_stderr_target, 1);
+	log_parse_category_mask(osmo_stderr_target, "DLOAP,1");
 
 	test_oap_api();
 	printf("Done\n");
diff --git a/openbsc/tests/oap/oap_client_test.err b/openbsc/tests/oap/oap_client_test.err
index 3272237..248808e 100644
--- a/openbsc/tests/oap/oap_client_test.err
+++ b/openbsc/tests/oap/oap_client_test.err
@@ -3,26 +3,26 @@
 - reset state
 - only client_id is invalid
 - valid id, but omitted shared_secret (1/2)
-DGPRS OAP: client ID set, but secret K missing.
+DLOAP OAP: client ID set, but secret K missing.
 - valid id, but omitted shared_secret (2/2)
-DGPRS OAP: client ID set, but secret OPC missing.
+DLOAP OAP: client ID set, but secret OPC missing.
 - mint configuration
 - Missing challenge data
-DGPRS OAP challenge incomplete (rand_present: 0, autn_present: 0)
+DLOAP OAP challenge incomplete (rand_present: 0, autn_present: 0)
 - AUTN missing
-DGPRS OAP challenge incomplete (rand_present: 1, autn_present: 0)
+DLOAP OAP challenge incomplete (rand_present: 1, autn_present: 0)
 - RAND missing
-DGPRS OAP challenge incomplete (rand_present: 0, autn_present: 1)
+DLOAP OAP challenge incomplete (rand_present: 0, autn_present: 1)
 - wrong autn (by one bit)
-DGPRS OAP: AUTN mismatch!
-DGPRS OAP: AUTN from server: dec4e3848a33000086781158ca40f136
-DGPRS OAP: AUTN expected:    cec4e3848a33000086781158ca40f136
+DLOAP OAP: AUTN mismatch!
+DLOAP OAP: AUTN from server: dec4e3848a33000086781158ca40f136
+DLOAP OAP: AUTN expected:    cec4e3848a33000086781158ca40f136
 - all data correct
 - but refuse to evaluate in uninitialized state
 - now everything is correct
 - Expect the challenge response in msg_tx
 - Receive registration error for the first time.
-DGPRS OAP registration failed
+DLOAP OAP registration failed
 - Receive registration error for the Nth time.
-DGPRS OAP registration failed
+DLOAP OAP registration failed
 - Registration success
