diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 8e2a2c5d73685aa4b6bd61d2fe88232008601804..d014bb5738049a415914c457cb68f641d2bd480b 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -3504,7 +3504,12 @@ local0.*    /var/log/postgresql
             </row>
             <row>
              <entry><literal>%u</literal></entry>
-             <entry>User name</entry>
+             <entry>Login user name</entry>
+             <entry>yes</entry>
+            </row>
+            <row>
+             <entry><literal>%U</literal></entry>
+             <entry>Current user name</entry>
              <entry>yes</entry>
             </row>
             <row>
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index a1a449f2ddcfa710702dce767ea0ca515c5d6645..49d9236767d573745b6d0a523050ce46e10ccc4f 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -1826,6 +1826,16 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
 					appendStringInfoString(buf, username);
 				}
 				break;
+			case 'U':
+				if (MyProcPort)
+				{
+					const char *username = GetUserNameFromId(GetUserId());
+
+					if (username == NULL || *username == '\0')
+						username = _("[unknown]");
+					appendStringInfoString(buf, username);
+				}
+				break;
 			case 'd':
 				if (MyProcPort)
 				{