diff --git a/src/logged.ts b/src/logged.ts
index b59aef4..914b887 100644
--- a/src/logged.ts
+++ b/src/logged.ts
@@ -49,10 +49,16 @@ export function LoggedInjectable(options?: ScopeOptions) {
         method !== "constructor" &&
         typeof target.prototype[method] === "function"
       ) {
+        const all = Reflect.getMetadataKeys(target.prototype[method]).map(
+          (k) => [k, Reflect.getMetadata(k, target.prototype[method])]
+        );
         logger.log(`LoggedFunction applied to ${method}`);
         LoggedFunction(target.prototype, method, {
           value: target.prototype[method],
         });
+        all.forEach(([k, v]) =>
+          Reflect.defineMetadata(k, v, target.prototype[method])
+        );
       }
     });
 
@@ -86,14 +92,18 @@ export function LoggedController(param?: any): (target: any) => void {
           "method",
           target.prototype[method]
         );
+        const all = Reflect.getMetadataKeys(target.prototype[method]).map(
+          (k) => [k, Reflect.getMetadata(k, target.prototype[method])]
+        );
         logger.log(
           `LoggedRoute applied to ${method} (${RevRequestMethod[httpMethod]} ${path})`
         );
         LoggedRoute()(target.prototype, method, {
           value: target.prototype[method],
         });
-        Reflect.defineMetadata("path", path, target.prototype[method]);
-        Reflect.defineMetadata("method", httpMethod, target.prototype[method]);
+        all.forEach(([k, v]) =>
+          Reflect.defineMetadata(k, v, target.prototype[method])
+        );
       }
     });