Is there a way to get line number and function name in Swift language?

The Swift Language Reference defines a few "special literals" that offer this behavior:

Literal        Type     Value

#file          String   The name of the file in which it appears.
#line          Int      The line number on which it appears.
#column        Int      The column number in which it begins.
#function      String   The name of the declaration in which it appears.

Literal     Type              Value

#file       String            The path to the file in which it appears.
#fileID     String            The name of the file and module in which it appears.
#filePath   String            The path to the file in which it appears.
#line       Int               The line number on which it appears.
#column     Int               The column number in which it begins.
#function   String            The name of the declaration in which it appears.
#dsohandle  UnsafeRawPointer  The dynamic shared object (DSO) handle in use where it appears.

See documentation for more information

Example:

print("Function: \(#function), line: \(#line)") 

With default values in parameters you can also create a function:

public func track(_ message: String, file: String = #file, function: String = #function, line: Int = #line ) { 
    print("\(message) called from \(function) \(file):\(line)") 
}

which can be used like this

track("enters app")

Tags:

Swift